All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/15] Add ARM64 support for MSHV accelerator
@ 2026-05-27  5:00 Aastha Rawat
  2026-05-27  5:00 ` [PATCH v4 01/15] accel/mshv: move msr.c to target/i386 Aastha Rawat
                   ` (14 more replies)
  0 siblings, 15 replies; 17+ messages in thread
From: Aastha Rawat @ 2026-05-27  5:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Magnus Kulke, Wei Liu, Paolo Bonzini, Marc-André Lureau,
	Daniel P. Berrangé, Philippe Mathieu-Daudé,
	Peter Maydell, Anirudh Rayabharam, Aastha Rawat, qemu-arm,
	Alexander Graf, Pedro Barbuda, Mohamed Mediouni,
	Doru Blânzeanu, Pierrick Bouvier, Magnus Kulke

This series adds ARM64 guest support to the MSHV (Microsoft Hypervisor)
accelerator, enabling QEMU to run aarch64 VMs on Microsoft's hypervisor
using the mshv Linux kernel module.

The first few patches refactor the existing x86 MSHV code to separate
arch-specific pieces from common infrastructure: moving MSR handling to
target/i386, extracting shared register hypercall helpers, provisioning
host CPU features, and introducing arch-specific init hooks.

The remaining patches add the ARM64 backend:
 - vCPU state get/set using hypervisor register hypercalls
 - -cpu host support by querying ID registers from the hypervisor
 - vCPU run loop with MMIO emulation via ESR_EL2 syndrome decoding
 - In-kernel vGICv3 backed by HVCALL_ASSERT_VIRTUAL_INTERRUPT
 - Interrupt control structure adjustments for arm64

With this series, a standard aarch64 virt machine can be launched with:
  qemu-system-aarch64 -accel mshv -cpu host -M virt ...

Caveats:
- Live migration is not yet supported.

---
Changes in v2:
- Removed PATCH: "accel/mshv: provision guests with the same features as host".
- Extracted common MMIO emulation logic for hvf, whpx and mshv to a
  common place.
- Fixed checkpatch errors/warnings.
- Picked up reviewed-by tags.
- Link to v1: https://lore.kernel.org/qemu-devel/20260311-mshv_accel_arm64_supp-v1-0-c31699b7bc1f@anirudhrb.com

---
Changes in v3:
- Handled GPA Intercept in vCPU run loop to fix EDK2 firmware boot.
- Updated the cover letter: removed caveat about EDK2 firmware boot as
  it is now fixed.
- Link to v2: https://lore.kernel.org/qemu-devel/20260402-mshv_accel_arm64_supp-v2-0-754895c15e9e@linux.microsoft.com/

---
Changes in v4:
- Split "target/arm: convert host CPU features ifdef ladder to runtime
  checks" out of the -cpu host patch to separate the refactoring.
- Refactored MMIO emulation helper (arm_emulate_mmio) to use callback
  ops for per-register access avoiding full CPU state sync for single
  register MMIo operations for HVF & WHPX.
- Reordered patches: moved "arch-specific accelerator init hook" earlier
  (patch 3), before the arm64 build enablenment.
- Updated cpu_thread_is_idle() comment to be arch-neutral.
- Link to v3: https://lore.kernel.org/qemu-devel/20260421-mshv_accel_arm64_supp-v3-0-469f544778ba@linux.microsoft.com

---
Aastha Rawat (9):
      accel/mshv: move msr.c to target/i386
      accel/mshv: extract common CPU register helpers
      meson, target/arm/mshv: Enable arm64 build & add initial MSHV support
      target/arm/mshv: implement vcpu state operations for ARM64
      target/arm: convert host CPU feature ifdef ladder to runtime checks
      target/arm/mshv: implement -cpu host for MSHV
      accel/mshv: Add access_vp_regs synthetic proc features
      target/arm: cpu: Mark MSHV supporting PSCI 1.3
      target/arm: extract MMIO emulation logic for HVF & WHPX

Anirudh Rayabharam (Microsoft) (5):
      accel/mshv: add arch-specific accelerator init hook
      target/arm/mshv: add vCPU run loop
      include/hw/hyperv: adjust hv_interrupt_control structure for arm64
      hw/intc,target/arm/mshv: add MSHV vGICv3 implementation
      MAINTAINERS: updates for MSHV arm64 code

Magnus Kulke (1):
      accel/mshv: implement cpu_thread_is_idle() hook

 MAINTAINERS                        |   8 +
 accel/mshv/irq.c                   |   2 +
 accel/mshv/meson.build             |   4 +-
 accel/mshv/mshv-all.c              |  26 +-
 accel/mshv/mshv-cpu-common.c       | 151 ++++++++++
 hw/arm/virt.c                      |  15 +-
 hw/intc/arm_gicv3_common.c         |   6 +-
 hw/intc/arm_gicv3_mshv.c           | 181 ++++++++++++
 hw/intc/meson.build                |   1 +
 include/hw/hyperv/hvgdk_mini.h     | 130 +++++++++
 include/hw/hyperv/hvhdk.h          | 101 ++++++-
 include/hw/hyperv/hvhdk_mini.h     |   6 +
 include/hw/intc/arm_gicv3_common.h |   2 +-
 include/system/hw_accel.h          |   3 +-
 include/system/mshv.h              |   2 +
 include/system/mshv_int.h          |   6 +-
 meson.build                        |   8 +-
 target/arm/cpu.c                   |   8 +-
 target/arm/cpu64.c                 |  27 +-
 target/arm/helper.c                |  62 ++++
 target/arm/helper.h                |  16 ++
 target/arm/hvf/hvf.c               |  57 ++--
 target/arm/meson.build             |   1 +
 target/arm/mshv/meson.build        |   7 +
 target/arm/mshv/mshv-all.c         | 572 +++++++++++++++++++++++++++++++++++++
 target/arm/mshv_arm.h              |  18 ++
 target/arm/syndrome.h              |  47 +++
 target/arm/whpx/whpx-all.c         |  41 ++-
 target/i386/mshv/meson.build       |   2 +
 target/i386/mshv/mshv-all.c        |  85 ++++++
 target/i386/mshv/mshv-cpu.c        | 170 +----------
 {accel => target/i386}/mshv/msr.c  |   0
 32 files changed, 1505 insertions(+), 260 deletions(-)
---
base-commit: 554cbfb1cf4601d2762f5315c884319e361b24cb
change-id: 20260311-mshv_accel_arm64_supp-e86b0082aee4

Best regards,
--  
Aastha Rawat <aastharawat@linux.microsoft.com>



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

end of thread, other threads:[~2026-06-02 13:25 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-27  5:00 [PATCH v4 00/15] Add ARM64 support for MSHV accelerator Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 01/15] accel/mshv: move msr.c to target/i386 Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 02/15] accel/mshv: extract common CPU register helpers Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 03/15] accel/mshv: add arch-specific accelerator init hook Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 04/15] meson, target/arm/mshv: Enable arm64 build & add initial MSHV support Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 05/15] target/arm/mshv: implement vcpu state operations for ARM64 Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 06/15] target/arm: convert host CPU feature ifdef ladder to runtime checks Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 07/15] target/arm/mshv: implement -cpu host for MSHV Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 08/15] accel/mshv: Add access_vp_regs synthetic proc features Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 09/15] target/arm: cpu: Mark MSHV supporting PSCI 1.3 Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 10/15] accel/mshv: implement cpu_thread_is_idle() hook Aastha Rawat
2026-06-02 13:24   ` Magnus Kulke
2026-05-27  5:00 ` [PATCH v4 11/15] target/arm: extract MMIO emulation logic for HVF & WHPX Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 12/15] target/arm/mshv: add vCPU run loop Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 13/15] include/hw/hyperv: adjust hv_interrupt_control structure for arm64 Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 14/15] hw/intc,target/arm/mshv: add MSHV vGICv3 implementation Aastha Rawat
2026-05-27  5:00 ` [PATCH v4 15/15] MAINTAINERS: updates for MSHV arm64 code Aastha Rawat

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.