From: Mohamed Mediouni <mohamed@unpredictable.fr>
To: qemu-devel@nongnu.org, mohamed@unpredictable.fr
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Alexander Graf" <agraf@csgraf.de>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Phil Dennis-Jordan" <phil@philjordan.eu>,
"Alex Bennée" <alex.bennee@linaro.org>,
qemu-arm@nongnu.org, "Pedro Barbuda" <pbarbuda@microsoft.com>,
"Akihiko Odaki" <odaki@rsg.ci.i.u-tokyo.ac.jp>,
"Peter Xu" <peterx@redhat.com>, "Mads Ynddal" <mads@ynddal.dk>
Subject: [PATCH v11 00/28] WHPX support for Arm
Date: Fri, 21 Nov 2025 11:02:12 +0100 [thread overview]
Message-ID: <20251121100240.89117-1-mohamed@unpredictable.fr> (raw)
Link to branch: https://github.com/mediouni-m/qemu whpx (tag for this submission: whpx-v11)
Missing features:
- PSCI state sync with Hyper-V for VM save/restore (which isn't supported because of the second item)
- Interrupt controller save-restore: As such, save/restore of VM state is currently blocked.
- SVE register sync: I didn't have the time to test this on pre-release hardware with SVE2 support yet.
Known bugs:
- U-Boot still doesn't work (hangs when trying to parse firmware) but EDK2 does.
Note:
"target/arm/kvm: add constants for new PSCI versions" taken from the mailing list.
"accel/system: Introduce hwaccel_enabled() helper" taken from the mailing list, added here
as part of this series to make it compilable as a whole.
"hw/arm: virt: add GICv2m for the case when ITS is not available" present in both the HVF
vGIC and this series.
"hw: arm: virt-acpi-build: add hack" is not proper, but it's just for keeping the current
state of things... What should we do for older VMs to retain the same ACPI tables? Or is
that not a concern?
And another note:
Seems that unlike HVF there isn't direct correspondence between WHv registers and the actual register layout,
so didn't do changes there to a sysreg.inc.
Updates since v10:
- Bring forward to latest Qemu
- Fix a typo in the GICv3+GICv2m PR
Updates since v9:
- Adding partition reset on the reboot side of things...
Updates since v8:
- v9 and v8 were not submitted properly because of my MTA not behaving, sorry for that.
- v10 introduces a new argument, -M msi=, to handle MSI-X configuration more granularly.
- That surfaced what I think is a bug (?), with vms->its=1 on GICv2 configurations... or I did understand everything wrong.
- Oopsie due to email provider ratelimiting.
Updates since v7:
- Oops, fixing bug in "hw/arm: virt: cleanly fail on attempt to use the platform vGIC together with ITS".
Other commits are unchanged.
Updates since v6:
- Rebasing
- Fixing a bug in the GICv3+GICv2m case for ACPI table generation
- getting rid of the slots infrastructure for memory management
- Place the docs commit right after the "cleanly fail on attempt to run GICv3+GICv2m on an unsupported config" one
as that's what switches ITS to a tristate.
- Fixing a build issue when getting rid of the arch-specific arm64 hvf-stub.
Updates since v5:
- Rebasing
- Address review comments
- Rework ITS enablement to a tristate
- On x86: move away from deprecated APIs to get/set APIC state
Updates since v4:
- Taking into account review comments
- Add migration blocker in the vGICv3 code due to missing interrupt controller save/restore
- Debug register sync
Updates since v3:
- Disabling SVE on WHPX
- Taking into account review comments incl:
- fixing x86 support
- reduce the amount of __x86_64__ checks in common code to the minimum (winhvemulation)
which can be reduced even further down the road.
- generalize get_physical_address_range into something common between hvf and whpx
Updates since v2:
- Fixed up a rebase screwup for whpx-internal.h
- Fixed ID_AA64ISAR1_EL1 and ID_AA64ISAR2_EL1 feature probe for -cpu host
- Switched to ID_AA64PFR1_EL1/ID_AA64DFR0_EL1 instead of their non-AA64 variant
Updates since v1:
- Shutdowns and reboots
- MPIDR_EL1 register sync
- Fixing GICD_TYPER_LPIS value
- IPA size clamping
- -cpu host now implemented
Mohamed Mediouni (26):
qtest: hw/arm: virt: skip ACPI test for ITS off
hw/arm: virt: add GICv2m for the case when ITS is not available
tests: data: update AArch64 ACPI tables
whpx: Move around files before introducing AArch64 support
whpx: reshuffle common code
whpx: ifdef out winhvemulation on non-x86_64
whpx: common: add WHPX_INTERCEPT_DEBUG_TRAPS define
hw, target, accel: whpx: change apic_in_platform to kernel_irqchip
whpx: switch irqchip in kernel to a bool outside the struct
whpx: interrupt controller support
whpx: add arm64 support
whpx: change memory management logic
target/arm: cpu: mark WHPX as supporting PSCI 1.3
hw/arm: virt: cleanly fail on attempt to use the platform vGIC
together with ITS
hw: arm: virt: rework MSI-X configuration
hw: arm: virt-acpi-build: add hack
docs: arm: update virt machine model description
whpx: arm64: clamp down IPA size
hw/arm, accel/hvf, whpx: unify get_physical_address_range between WHPX
and HVF
whpx: arm64: implement -cpu host
target/arm: whpx: instantiate GIC early
whpx: arm64: gicv3: add migration blocker
whpx: enable arm64 builds
whpx: apic: use non-deprecated APIs to control interrupt controller
state
whpx: arm64: check for physical address width after WHPX availability
whpx: arm64: add partition-wide reset on the reboot path
Philippe Mathieu-Daudé (1):
accel/system: Introduce hwaccel_enabled() helper
Sebastian Ott (1):
target/arm/kvm: add constants for new PSCI versions
MAINTAINERS | 4 +
accel/hvf/hvf-all.c | 7 +-
accel/meson.build | 1 +
accel/stubs/whpx-stub.c | 1 +
accel/whpx/meson.build | 7 +
{target/i386 => accel}/whpx/whpx-accel-ops.c | 6 +-
accel/whpx/whpx-common.c | 540 +++++++++
docs/system/arm/virt.rst | 10 +-
hw/arm/virt-acpi-build.c | 16 +-
hw/arm/virt.c | 131 ++-
hw/i386/x86-cpu.c | 4 +-
hw/intc/arm_gicv3_common.c | 3 +
hw/intc/arm_gicv3_whpx.c | 249 ++++
hw/intc/meson.build | 1 +
include/hw/arm/virt.h | 8 +-
include/hw/boards.h | 3 +-
include/hw/intc/arm_gicv3_common.h | 3 +
include/system/hvf_int.h | 5 +
include/system/hw_accel.h | 13 +
.../whpx => include/system}/whpx-accel-ops.h | 4 +-
include/system/whpx-all.h | 20 +
include/system/whpx-common.h | 26 +
.../whpx => include/system}/whpx-internal.h | 24 +-
include/system/whpx.h | 5 +-
meson.build | 20 +-
target/arm/cpu.c | 3 +
target/arm/cpu64.c | 17 +-
target/arm/hvf-stub.c | 20 -
target/arm/hvf/hvf.c | 6 +-
target/arm/hvf_arm.h | 3 -
target/arm/kvm-consts.h | 2 +
target/arm/meson.build | 2 +-
target/arm/whpx/meson.build | 5 +
target/arm/whpx/whpx-all.c | 1020 +++++++++++++++++
target/arm/whpx/whpx-stub.c | 15 +
target/arm/whpx_arm.h | 17 +
target/i386/cpu-apic.c | 2 +-
target/i386/hvf/hvf.c | 11 +
target/i386/whpx/meson.build | 1 -
target/i386/whpx/whpx-all.c | 569 +--------
target/i386/whpx/whpx-apic.c | 48 +-
tests/data/acpi/aarch64/virt/APIC.its_off | Bin 164 -> 188 bytes
42 files changed, 2205 insertions(+), 647 deletions(-)
create mode 100644 accel/whpx/meson.build
rename {target/i386 => accel}/whpx/whpx-accel-ops.c (96%)
create mode 100644 accel/whpx/whpx-common.c
create mode 100644 hw/intc/arm_gicv3_whpx.c
rename {target/i386/whpx => include/system}/whpx-accel-ops.h (92%)
create mode 100644 include/system/whpx-all.h
create mode 100644 include/system/whpx-common.h
rename {target/i386/whpx => include/system}/whpx-internal.h (88%)
delete mode 100644 target/arm/hvf-stub.c
create mode 100644 target/arm/whpx/meson.build
create mode 100644 target/arm/whpx/whpx-all.c
create mode 100644 target/arm/whpx/whpx-stub.c
create mode 100644 target/arm/whpx_arm.h
--
2.50.1 (Apple Git-155)
next reply other threads:[~2025-11-21 10:06 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-21 10:02 Mohamed Mediouni [this message]
2025-11-21 10:02 ` [PATCH v11 01/28] target/arm/kvm: add constants for new PSCI versions Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 02/28] accel/system: Introduce hwaccel_enabled() helper Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 03/28] qtest: hw/arm: virt: skip ACPI test for ITS off Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 04/28] hw/arm: virt: add GICv2m for the case when ITS is not available Mohamed Mediouni
2025-11-21 10:37 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 05/28] tests: data: update AArch64 ACPI tables Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 06/28] whpx: Move around files before introducing AArch64 support Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 07/28] whpx: reshuffle common code Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 08/28] whpx: ifdef out winhvemulation on non-x86_64 Mohamed Mediouni
2025-11-21 10:40 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 09/28] whpx: common: add WHPX_INTERCEPT_DEBUG_TRAPS define Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 10/28] hw, target, accel: whpx: change apic_in_platform to kernel_irqchip Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 11/28] whpx: switch irqchip in kernel to a bool outside the struct Mohamed Mediouni
2025-11-21 10:49 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 12/28] whpx: interrupt controller support Mohamed Mediouni
2025-11-21 11:00 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 13/28] whpx: add arm64 support Mohamed Mediouni
2025-11-21 11:40 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 14/28] whpx: change memory management logic Mohamed Mediouni
2025-11-21 12:01 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 15/28] target/arm: cpu: mark WHPX as supporting PSCI 1.3 Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 16/28] hw/arm: virt: cleanly fail on attempt to use the platform vGIC together with ITS Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 17/28] hw: arm: virt: rework MSI-X configuration Mohamed Mediouni
2025-11-21 12:05 ` Akihiko Odaki
2025-11-21 10:02 ` [PATCH v11 18/28] hw: arm: virt-acpi-build: add hack Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 19/28] docs: arm: update virt machine model description Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 20/28] whpx: arm64: clamp down IPA size Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 21/28] hw/arm, accel/hvf, whpx: unify get_physical_address_range between WHPX and HVF Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 22/28] whpx: arm64: implement -cpu host Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 23/28] target/arm: whpx: instantiate GIC early Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 24/28] whpx: arm64: gicv3: add migration blocker Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 25/28] whpx: enable arm64 builds Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 26/28] whpx: apic: use non-deprecated APIs to control interrupt controller state Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 27/28] whpx: arm64: check for physical address width after WHPX availability Mohamed Mediouni
2025-11-21 10:02 ` [PATCH v11 28/28] whpx: arm64: add partition-wide reset on the reboot path Mohamed Mediouni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251121100240.89117-1-mohamed@unpredictable.fr \
--to=mohamed@unpredictable.fr \
--cc=agraf@csgraf.de \
--cc=alex.bennee@linaro.org \
--cc=mads@ynddal.dk \
--cc=odaki@rsg.ci.i.u-tokyo.ac.jp \
--cc=pbarbuda@microsoft.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=phil@philjordan.eu \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).