Now that Apple Silicon is widely available, people are obviously excited to try and run virtualized workloads on them, such as Linux and Windows.
This patch set implements a rudimentary, first version to get the ball going on that. With this applied, I can successfully run both Linux and Windows as guests, albeit with a few caveats: * no WFI emulation, a vCPU always uses 100% * vtimer handling is a bit hacky * we handle most sysregs flying blindly, just returning 0 * XHCI breaks in OVMF, works in Linux+Windows Despite those drawbacks, it's still an exciting place to start playing with the power of Apple Silicon. Enjoy! Alex Alexander Graf (8): hvf: Add hypervisor entitlement to output binaries hvf: Move common code out arm: Set PSCI to 0.2 for HVF arm: Synchronize CPU on PSCI on hvf: Add Apple Silicon support hvf: Use OS provided vcpu kick function arm: Add Hypervisor.framework build target hw/arm/virt: Disable highmem when on hypervisor.framework MAINTAINERS | 14 +- accel/hvf/entitlements.plist | 8 + accel/hvf/hvf-all.c | 56 ++++ accel/hvf/hvf-cpus.c | 484 +++++++++++++++++++++++++++++++++++ accel/hvf/meson.build | 7 + accel/meson.build | 1 + hw/arm/virt.c | 9 + include/hw/core/cpu.h | 3 +- include/sysemu/hvf_int.h | 69 +++++ meson.build | 39 ++- scripts/entitlement.sh | 11 + target/arm/arm-powerctl.c | 3 + target/arm/cpu.c | 4 + target/arm/hvf/hvf.c | 345 +++++++++++++++++++++++++ target/arm/hvf/meson.build | 3 + target/arm/meson.build | 2 + target/i386/hvf/hvf-cpus.c | 131 ---------- target/i386/hvf/hvf-cpus.h | 25 -- target/i386/hvf/hvf-i386.h | 48 +--- target/i386/hvf/hvf.c | 360 +------------------------- target/i386/hvf/meson.build | 1 - target/i386/hvf/x86hvf.c | 11 +- target/i386/hvf/x86hvf.h | 2 - 23 files changed, 1061 insertions(+), 575 deletions(-) create mode 100644 accel/hvf/entitlements.plist create mode 100644 accel/hvf/hvf-all.c create mode 100644 accel/hvf/hvf-cpus.c create mode 100644 accel/hvf/meson.build create mode 100644 include/sysemu/hvf_int.h create mode 100755 scripts/entitlement.sh create mode 100644 target/arm/hvf/hvf.c create mode 100644 target/arm/hvf/meson.build delete mode 100644 target/i386/hvf/hvf-cpus.c delete mode 100644 target/i386/hvf/hvf-cpus.h -- 2.24.3 (Apple Git-128)