From 5721daa049efa3de448739c80c17e98d02db2f9c Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 22 Feb 2026 16:25:10 +0000 Subject: [PATCH] cmake: only enable KVM if building on Linux --- arch/x86_64/QEMU.cmake | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/arch/x86_64/QEMU.cmake b/arch/x86_64/QEMU.cmake index de36640..acfa388 100644 --- a/arch/x86_64/QEMU.cmake +++ b/arch/x86_64/QEMU.cmake @@ -8,6 +8,14 @@ find_program(LLDB lldb) find_program(GDB gdb) set(patched_kernel ${CMAKE_CURRENT_BINARY_DIR}/kernel/${kernel_name}.elf32) +set(generic_flags -m 1G) + +if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux") + message(STATUS "QEMU: Enabling KVM acceleration") + set(generic_flags ${generic_flags} -enable-kvm) +else () + message(STATUS "QEMU: Host system is not Linux. KVM acceleration unavailable") +endif () add_custom_command(OUTPUT ${patched_kernel} DEPENDS ${kernel_name} @@ -25,7 +33,8 @@ add_custom_target(run-kernel ${QEMU} -kernel ${patched_kernel} -initrd ${sys_dir}/${bsp_name} - -m 1G -serial stdio -enable-kvm + ${generic_flags} + -serial stdio --append kernel.early-console=ttyS0 USES_TERMINAL DEPENDS ${patched_kernel} bsp) @@ -35,7 +44,8 @@ add_custom_target(run-kernel-monitor ${QEMU} -kernel $ -initrd ${sys_dir}/${bsp_name} - -m 1G -monitor stdio + ${generic_flags} + -monitor stdio USES_TERMINAL DEPENDS ${kernel_name} bsp) @@ -45,7 +55,7 @@ if (image_cdrom) COMMAND ${QEMU} -cdrom ${image_cdrom} - -m 1G + ${generic_flags} -serial stdio USES_TERMINAL DEPENDS ${image_cdrom}) @@ -58,8 +68,8 @@ if (LLDB) ${QEMU} -kernel $ -initrd ${sys_dir}/${bsp_name} - -enable-kvm - -m 1G -s -S & + ${generic_flags} + -s -S & ${LLDB} -o "file ${CMAKE_BINARY_DIR}/kernel/${kernel_name}.debug" -o "gdb-remote localhost:1234" @@ -72,7 +82,8 @@ if (LLDB) COMMAND ${QEMU} -cdrom ${image_cdrom} - -m 1G -s -S & + ${generic_flags} + -s -S & ${LLDB} -o "file ${CMAKE_BINARY_DIR}/kernel/${kernel_name}.debug" -o "target remote localhost:1234" @@ -86,7 +97,8 @@ elseif (GDB) ${QEMU} -kernel $ -initrd ${sys_dir}/${bsp_name} - -m 1G -s -S & + ${generic_flags} + -s -S & ${GDB} -o "file ${CMAKE_BINARY_DIR}/kernel/${kernel_name}.debug" -o "remote localhost:1234" @@ -99,7 +111,8 @@ elseif (GDB) COMMAND ${QEMU} -cdrom ${image_cdrom} - -m 1G -s -S & + ${generic_flags} + -s -S & ${GDB} -tui -s "${CMAKE_BINARY_DIR}/kernel/${kernel_name}.debug" -ex "target remote localhost:1234"