From: Marco Schlumpp Date: Thu, 9 Feb 2023 13:38:27 +0000 (+0100) Subject: plat/kvm: Add hypervisor/boot protocol configuration X-Git-Tag: RELEASE-0.13.0~42 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=deef081dd04ee254c03266b431befb3ae4d2a329;p=unikraft%2Funikraft.git plat/kvm: Add hypervisor/boot protocol configuration This allows the configuration of a target hypervisor. Depending on the hypervisor a suitable boot protocol is selected. Signed-off-by: Marco Schlumpp Reviewed-by: Sergiu Moga Approved-by: Marc Rittinghaus Tested-by: Unikraft CI GitHub-Closes: #760 --- diff --git a/plat/kvm/Config.uk b/plat/kvm/Config.uk index b028fba15..8452edef2 100644 --- a/plat/kvm/Config.uk +++ b/plat/kvm/Config.uk @@ -12,6 +12,22 @@ menuconfig PLAT_KVM if (PLAT_KVM) +if (ARCH_X86_64) + +config KVM_BOOT_PROTO_MULTIBOOT + bool + +choice + prompt "Hypervisor" + default KVM_HYPERVISOR_QEMU + +config KVM_HYPERVISOR_QEMU + bool "QEMU" + select KVM_BOOT_PROTO_MULTIBOOT + +endchoice +endif + menu "Console Options" config KVM_KERNEL_SERIAL_CONSOLE @@ -85,7 +101,7 @@ config KVM_MAX_IRQ_HANDLER_ENTRIES config KVM_PCI bool "PCI Bus Driver" default y - depends on (ARCH_X86_64 || ARCH_ARM_64) + depends on (ARCH_X86_64 || ARCH_ARM_64) && KVM_HYPERVISOR_QEMU select LIBUKBUS help PCI bus driver for probing and operating PCI devices diff --git a/plat/kvm/Linker.uk b/plat/kvm/Linker.uk index 720e39ef8..c1ddc84a3 100644 --- a/plat/kvm/Linker.uk +++ b/plat/kvm/Linker.uk @@ -1,7 +1,9 @@ ifeq (x86_64,$(CONFIG_UK_ARCH)) +ifeq ($(CONFIG_KVM_BOOT_PROTO_MULTIBOOT),y) KVM_LDFLAGS-y += -Wl,-m,elf_x86_64 KVM_LDFLAGS-y += -Wl,--entry=_multiboot_entry KVM_STRIPFLAGS += --output-target elf32-i386 +endif else ifeq (arm64,$(CONFIG_UK_ARCH)) KVM_LDFLAGS-y += -Wl,-m,aarch64elf KVM_LINK_LIBGCC_FLAG := -lgcc diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk index 8a132efd9..120ba54f5 100644 --- a/plat/kvm/Makefile.uk +++ b/plat/kvm/Makefile.uk @@ -60,8 +60,10 @@ LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(UK_PLAT_COMMON_BASE)/x86/acpi.c|commo endif LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(UK_PLAT_COMMON_BASE)/bootinfo.c|common LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(UK_PLAT_COMMON_BASE)/bootinfo.lds.S|common +ifeq ($(CONFIG_KVM_BOOT_PROTO_MULTIBOOT),y) LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBKVMPLAT_BASE)/x86/multiboot.S|x86 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBKVMPLAT_BASE)/x86/multiboot.c +endif LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBKVMPLAT_BASE)/x86/pagetable64.S LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBKVMPLAT_BASE)/x86/traps.c LIBKVMPLAT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBKVMPLAT_BASE)/x86/cpu_vectors_x86_64.S