While it might be normal to disable PSCI on KVM, I doubt the VFP helpers are correct ;)
Anyway this allow to link the binary and run a KVM guest. Tested using: $ make pc-bios/edk2-aarch64-code.fd $ dd if=/dev/zero of=flash1.img bs=1M count=64 $ aarch64-softmmu/qemu-system-aarch64 \ -nographic \ -enable-kvm \ -M virt,gic-version=3 \ -cpu host \ \ -pflash pc-bios/edk2-aarch64-code.fd \ -pflash flash1.img \ -drive if=none,file=bionic-server-cloudimg-arm64.img,id=hd0 \ -device virtio-blk-device,drive=hd0 \ \ -netdev type=user,id=net0 \ -device virtio-net-device,netdev=net0 Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- target/arm/Makefile.objs | 1 + target/arm/kvm-missing.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 target/arm/kvm-missing.c diff --git a/target/arm/Makefile.objs b/target/arm/Makefile.objs index b8aa9c032a..bf1cad2909 100644 --- a/target/arm/Makefile.objs +++ b/target/arm/Makefile.objs @@ -6,6 +6,7 @@ obj-$(CONFIG_SOFTMMU) += machine.o arch_dump.o monitor.o arm-powerctl.o obj-$(call land,$(CONFIG_TCG),$(CONFIG_SOFTMMU)) += psci.o obj-$(CONFIG_KVM) += kvm.o +obj-$(CONFIG_KVM) += kvm-missing.o obj-$(call land,$(CONFIG_KVM),$(call lnot,$(TARGET_AARCH64))) += kvm32.o obj-$(call land,$(CONFIG_KVM),$(TARGET_AARCH64)) += kvm64.o obj-$(call lnot,$(CONFIG_KVM)) += kvm-stub.o diff --git a/target/arm/kvm-missing.c b/target/arm/kvm-missing.c new file mode 100644 index 0000000000..0b32cd4e9c --- /dev/null +++ b/target/arm/kvm-missing.c @@ -0,0 +1,22 @@ +#include "qemu/osdep.h" +#include "cpu.h" +#include "internals.h" + +uint32_t vfp_get_fpscr(CPUARMState *env) +{ + return 0; +} + +void vfp_set_fpscr(CPUARMState *env, uint32_t val) +{ +} + +bool arm_is_psci_call(ARMCPU *cpu, int excp_type) +{ + return false; +} + +void arm_handle_psci_call(ARMCPU *cpu) +{ + abort(); +} -- 2.20.1