[PATCH v2 0/9] HVF: Add support for platform vGIC and nested virtualisation

Mohamed Mediouni posted 9 patches 3 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250725085545.93619-1-mohamed@unpredictable.fr
Maintainers: Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>, Phil Dennis-Jordan <phil@philjordan.eu>, Mads Ynddal <mads@ynddal.dk>, Peter Maydell <peter.maydell@linaro.org>, Shannon Zhao <shannon.zhaosl@gmail.com>, "Michael S. Tsirkin" <mst@redhat.com>, Igor Mammedov <imammedo@redhat.com>, Ani Sinha <anisinha@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Alexander Graf <agraf@csgraf.de>
There is a newer version of this series
accel/hvf/hvf-all.c        |  44 +++
accel/stubs/hvf-stub.c     |   1 +
hw/arm/virt-acpi-build.c   |   4 +-
hw/arm/virt.c              |  34 +-
hw/intc/arm_gicv3_common.c |   3 +
hw/intc/arm_gicv3_hvf.c    | 624 +++++++++++++++++++++++++++++++++++++
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       |  91 ++++++
target/arm/hvf_arm.h       |   3 +
13 files changed, 817 insertions(+), 10 deletions(-)
create mode 100644 hw/intc/arm_gicv3_hvf.c
[PATCH v2 0/9] HVF: Add support for platform vGIC and nested virtualisation
Posted by Mohamed Mediouni 3 months, 3 weeks ago
Early series.

Known issues:
- when nested virt is enabled, no UI response within EDK2
and a permanent wait. Workaround: -boot menu=on,splash-time=0
- Save/restore of GIC state isn't complete yet.
- Save/restore of HVF state when EL2 is enabled isn't complete yet.
- This series doesn't contain EL2 physical timer emulation, which is
needed if not leveraging the Apple vGIC.

However, this is usable and there seems to be some interest for it. Hopefully
it'll be at least somewhat useful.

PS: I can step up to maintain HVF support if needed. WHPX arm64 patch series
is coming soon too.

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

Mohamed Mediouni (9):
  target/arm: hvf: stubbing writes to LORC_EL1
  accel, hw/arm, include/system/hvf: plumbing changes for HVF vGIC
  target/arm: hvf: instantiate GIC early
  target/arm: add asserts for code paths not leveraged when using the
    vGIC
  hw/intc: Add hvf vGIC interrupt controller support
  hw/arm, target/arm: nested virtualisation on HVF
  target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1
  hw/arm: virt: add GICv2m for the case when ITS is not available
  target/arm: hvf: use LOG_UNIMP for CNTP_CVAL_EL0/SYSREG_CNTP_CTL_EL0

 accel/hvf/hvf-all.c        |  44 +++
 accel/stubs/hvf-stub.c     |   1 +
 hw/arm/virt-acpi-build.c   |   4 +-
 hw/arm/virt.c              |  34 +-
 hw/intc/arm_gicv3_common.c |   3 +
 hw/intc/arm_gicv3_hvf.c    | 624 +++++++++++++++++++++++++++++++++++++
 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       |  91 ++++++
 target/arm/hvf_arm.h       |   3 +
 13 files changed, 817 insertions(+), 10 deletions(-)
 create mode 100644 hw/intc/arm_gicv3_hvf.c

-- 
2.39.5 (Apple Git-154)
Re: [PATCH v2 0/9] HVF: Add support for platform vGIC and nested virtualisation
Posted by Mads Ynddal 3 months, 3 weeks ago
> On 25 Jul 2025, at 10.55, Mohamed Mediouni <mohamed@unpredictable.fr> wrote:
> 
> Early series.
> 
> Known issues:
> - when nested virt is enabled, no UI response within EDK2
> and a permanent wait. Workaround: -boot menu=on,splash-time=0
> - Save/restore of GIC state isn't complete yet.
> - Save/restore of HVF state when EL2 is enabled isn't complete yet.
> - This series doesn't contain EL2 physical timer emulation, which is
> needed if not leveraging the Apple vGIC.
> 
> However, this is usable and there seems to be some interest for it. Hopefully
> it'll be at least somewhat useful.
> 
> PS: I can step up to maintain HVF support if needed. WHPX arm64 patch series
> is coming soon too.
> 
> 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
> 
> Mohamed Mediouni (9):
>  target/arm: hvf: stubbing writes to LORC_EL1
>  accel, hw/arm, include/system/hvf: plumbing changes for HVF vGIC
>  target/arm: hvf: instantiate GIC early
>  target/arm: add asserts for code paths not leveraged when using the
>    vGIC
>  hw/intc: Add hvf vGIC interrupt controller support
>  hw/arm, target/arm: nested virtualisation on HVF
>  target/arm: hvf: pass through CNTHCTL_EL2 and MDCCINT_EL1
>  hw/arm: virt: add GICv2m for the case when ITS is not available
>  target/arm: hvf: use LOG_UNIMP for CNTP_CVAL_EL0/SYSREG_CNTP_CTL_EL0
> 
> accel/hvf/hvf-all.c        |  44 +++
> accel/stubs/hvf-stub.c     |   1 +
> hw/arm/virt-acpi-build.c   |   4 +-
> hw/arm/virt.c              |  34 +-
> hw/intc/arm_gicv3_common.c |   3 +
> hw/intc/arm_gicv3_hvf.c    | 624 +++++++++++++++++++++++++++++++++++++
> 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       |  91 ++++++
> target/arm/hvf_arm.h       |   3 +
> 13 files changed, 817 insertions(+), 10 deletions(-)
> create mode 100644 hw/intc/arm_gicv3_hvf.c
> 
> -- 
> 2.39.5 (Apple Git-154)
> 

Great patch set to see! I was working on the same functionality before
going on vacation. If you give me a bit of time, then I'll make sure to
review it.