qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 00/13] HVF: Add support for platform vGIC and nested virtualisation
@ 2025-08-08  7:01 Mohamed Mediouni
  2025-08-08  7:01 ` [PATCH v6 01/13] hw/arm: virt: add GICv2m for the case when ITS is not available Mohamed Mediouni
                   ` (12 more replies)
  0 siblings, 13 replies; 29+ messages in thread
From: Mohamed Mediouni @ 2025-08-08  7:01 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Shannon Zhao, Michael S. Tsirkin, Ani Sinha,
	qemu-arm, Paolo Bonzini, Roman Bolshakov, Igor Mammedov,
	Phil Dennis-Jordan, Alexander Graf, Mads Ynddal, Cameron Esfahani,
	Mohamed Mediouni

Link to branch: https://github.com/mediouni-m/qemu hvf-irqchip-and-nested
(tag for this submission: hvf-irqchip-and-nested-v6)

This series adds supports for nested virtualisation when using HVF on arm64 Macs.

It has three parts:
- Apple vGICv3 support and necessary infrastructure changes for it
- support for MSI interrupts in GICv3 + GICv2m configurations, which is independent
from Apple platforms and can be merged independently.
- Nested virtualisation support. Note that the nested virtualisation implementation
shipping as of macOS 26.0 is nVHE only, and does not leverage VNCR (FEAT_NV1-style).

Known issues:
- when nested virt is enabled, no UI response within EDK2
and a permanent wait. Workaround: -boot menu=on,splash-time=0. Interrupts do
work later on in Linux.
- This series doesn't contain EL2 physical timer emulation, which is
needed if not leveraging the Apple vGIC.

To do:
- Switching ITS to off by default when using HVF w/ vGIC or WHPX (will probably do when both the series are merged)
- After that, perhaps exit if ITS is explicitly enabled.

PS: I can step up to maintain HVF support if needed.

v1->v2:
Oops. I did a mistake when preparing my patches.

- Add hvf_arm_el2_enable(_) call to virt_set_virt
- Fix nested virt support check to add HVF

v2->v3:
- LORC_EL1 patch was merged separately, remove from this series.
- fix LPIs when kernel-irqchip disabled and using TCG
- remove spurious if case in vGIC supported version detection (inapplicable now)
- Add hvf_enabled() check in combination with hvf kernel-irqchip checks
- cleanly fail on attempt to use the platform vGIC together with ITS

v3->v4:
- GIC state save improvements, including saving the opaque Apple-specific state
- Saving HVF system register state when using the vGIC and/or EL2

v5:
- oops, fixed up save/restore to be functional
- misc changes otherwise

v6:
- Addressing review comments

Mohamed Mediouni (13):
  hw/arm: virt: add GICv2m for the case when ITS is not available
  hvf: switch hvf_arm_get_host_cpu_features to not create a vCPU
  accel, hw/arm, include/system/hvf: infrastructure changes for HVF vGIC
  hw/intc: Add hvf vGIC interrupt controller support
  hw/arm, target/arm: nested virtualisation on HVF
  hvf: save/restore Apple GIC state
  target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1
  hw/arm: virt: cleanly fail on attempt to use the platform vGIC
    together with ITS
  hvf: only call hvf_sync_vtimer() when running without the platform
    vGIC
  hvf: sync registers used at EL2
  hvf: gate ARM_FEATURE_PMU register emulation behind not being at EL2
  target/arm: hvf: instantiate GIC early
  target/arm: hvf: add asserts for code paths not leveraged when using
    the vGIC

 accel/hvf/hvf-all.c        |  50 +++
 accel/stubs/hvf-stub.c     |   1 +
 hw/arm/virt-acpi-build.c   |   4 +-
 hw/arm/virt.c              |  43 ++-
 hw/intc/arm_gicv3_common.c |   3 +
 hw/intc/arm_gicv3_hvf.c    | 723 +++++++++++++++++++++++++++++++++++++
 hw/intc/meson.build        |   1 +
 include/hw/arm/virt.h      |   2 +
 include/system/hvf.h       |   3 +
 system/vl.c                |   2 +
 target/arm/hvf-stub.c      |  15 +
 target/arm/hvf/hvf.c       | 240 ++++++++++--
 target/arm/hvf_arm.h       |   3 +
 13 files changed, 1057 insertions(+), 33 deletions(-)
 create mode 100644 hw/intc/arm_gicv3_hvf.c

-- 
2.39.5 (Apple Git-154)



^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2025-08-20 12:31 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-08  7:01 [PATCH v6 00/13] HVF: Add support for platform vGIC and nested virtualisation Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 01/13] hw/arm: virt: add GICv2m for the case when ITS is not available Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 02/13] hvf: switch hvf_arm_get_host_cpu_features to not create a vCPU Mohamed Mediouni
2025-08-20 12:29   ` Mads Ynddal
2025-08-08  7:01 ` [PATCH v6 03/13] accel, hw/arm, include/system/hvf: infrastructure changes for HVF vGIC Mohamed Mediouni
2025-08-12 13:05   ` Philippe Mathieu-Daudé
2025-08-08  7:01 ` [PATCH v6 04/13] hw/intc: Add hvf vGIC interrupt controller support Mohamed Mediouni
2025-08-12 16:19   ` Philippe Mathieu-Daudé
2025-08-14 12:57   ` Mads Ynddal
2025-08-15  5:55     ` Mohamed Mediouni
2025-08-19 13:21       ` Mads Ynddal
2025-08-08  7:01 ` [PATCH v6 05/13] hw/arm, target/arm: nested virtualisation on HVF Mohamed Mediouni
2025-08-11 12:47   ` Philippe Mathieu-Daudé
2025-08-11 13:35     ` Mohamed Mediouni
2025-08-11 13:40       ` Philippe Mathieu-Daudé
2025-08-11 12:56   ` Philippe Mathieu-Daudé
2025-08-11 13:13     ` Philippe Mathieu-Daudé
2025-08-11 13:35     ` Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 06/13] hvf: save/restore Apple GIC state Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 07/13] target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1 Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 08/13] hw/arm: virt: cleanly fail on attempt to use the platform vGIC together with ITS Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 09/13] hvf: only call hvf_sync_vtimer() when running without the platform vGIC Mohamed Mediouni
2025-08-19 12:37   ` Mads Ynddal
2025-08-08  7:01 ` [PATCH v6 10/13] hvf: sync registers used at EL2 Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 11/13] hvf: gate ARM_FEATURE_PMU register emulation behind not being " Mohamed Mediouni
2025-08-08  7:01 ` [PATCH v6 12/13] target/arm: hvf: instantiate GIC early Mohamed Mediouni
2025-08-14 13:06   ` Mads Ynddal
2025-08-08  7:01 ` [PATCH v6 13/13] target/arm: hvf: add asserts for code paths not leveraged when using the vGIC Mohamed Mediouni
2025-08-19 12:22   ` Mads Ynddal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).