On Wed, May 19, 2021 at 10:22:47PM +0200, Alexander Graf wrote: > With Apple Silicon available to the masses, it's a good time to add support > for driving its virtualization extensions from QEMU. > > This patch adds all necessary architecture specific code to get basic VMs > working. It's still pretty raw, but definitely functional. > > Known limitations: > > - Vtimer acknowledgement is hacky > - Should implement more sysregs and fault on invalid ones then > - WFI handling is missing, need to marry it with vtimer > > Signed-off-by: Alexander Graf > Reviewed-by: Roman Bolshakov > > --- > > v1 -> v2: > > - Merge vcpu kick function patch > - Implement WFI handling (allows vCPUs to sleep) > - Synchronize system registers (fixes OVMF crashes and reboot) > - Don't always call cpu_synchronize_state() > - Use more fine grained iothread locking > - Populate aa64mmfr0 from hardware > > v2 -> v3: > > - Advance PC on SMC > - Use cp list interface for sysreg syncs > - Do not set current_cpu > - Fix sysreg isread mask > - Move sysreg handling to functions > - Remove WFI logic again > - Revert to global iothread locking > - Use Hypervisor.h on arm, hv.h does not contain aarch64 definitions > > v3 -> v4: > > - No longer include Hypervisor.h > > v5 -> v6: > > - Swap sysreg definition order. This way we're in line with asm outputs. > > v6 -> v7: > > - Remove osdep.h include from hvf_int.h > - Synchronize SIMD registers as well > - Prepend 0x for hex values > - Convert DPRINTF to trace points > - Use main event loop (fixes gdbstub issues) > - Remove PSCI support, inject UDEF on HVC/SMC > - Change vtimer logic to look at ctl.istatus for vtimer mask sync > - Add kick callback again (fixes remote CPU notification) > > v7 -> v8: > > - Fix checkpatch errors > --- > MAINTAINERS | 5 + > accel/hvf/hvf-accel-ops.c | 14 + > include/sysemu/hvf_int.h | 9 +- > meson.build | 1 + > target/arm/hvf/hvf.c | 703 ++++++++++++++++++++++++++++++++++++ > target/arm/hvf/trace-events | 10 + > 6 files changed, 741 insertions(+), 1 deletion(-) > create mode 100644 target/arm/hvf/hvf.c > create mode 100644 target/arm/hvf/trace-events Reviewed-by: Sergio Lopez Tested-by: Sergio Lopez