* [GIT PULL] KVM/arm64 changes for 7.3
@ 2026-08-20 4:47 Oliver Upton
0 siblings, 0 replies; only message in thread
From: Oliver Upton @ 2026-08-20 4:47 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Marc Zyngier, Fuad Tabba, Joey Gouly, Steffen Eiden, Zenghui Yu,
kvm, kvmarm
Hi Paolo,
Apologies for the delay on sending you 7.3 content. I've been _mostly_ on
family leave for the past while but Marc + the entire reviewer crew has
helped significantly with getting this release into shape. Seriously,
thanks y'all.
Continuing with the current trend, this release is extremely fix heavy,
although we were able to get some new features in for PMU, nested, and pKVM
this time around.
There are two minor conflicts, one with the powerpc tree [1] and the other
with arm64 [2]. Resolutions for both are straightforward (e.g. add/add collision
in uapi.h)
Details found in the tag, please pull.
Thanks,
Oliver
[1]: https://lore.kernel.org/linux-next/ans20_e3b_8XJsvA@sirena.org.uk/
[2]: https://lore.kernel.org/linux-next/anXu1CnuHQo-fKId@sirena.org.uk/
The following changes since commit f5098b6bae761e346ebcd9da7f95622c04733cff:
Linux 7.2-rc5 (2026-07-26 14:45:48 -0700)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/ tags/kvmarm-7.3
for you to fetch changes up to aa8e5dc6a7a2a1141ab40706a51010adcd0e57d2:
Merge branch 'kvm-arm64/misc-7.3' into next (2026-08-19 14:08:24 -0700)
----------------------------------------------------------------
KVM/arm64 changes for 7.3
- Add support for 'slot' based PMU events, paired with new UAPI that
compels the user to select a specific PMU implementation
- Lazy save/restore of vCPU state for pKVM, along with various fixes
and cleanups to the management of vCPU state between the untrusted
host and pKVM hypervisor
- Disable traps of EL1 registers for nested hypervisors when FEAT_NV2p1
is present, guaranteeing that EL2-specific register bits are stateful
in the EL1 counterpart
- Leverage FEAT_NV3 to avoid unnecessary ERET/TLBI traps when the scope
of those instructions remains 'in host' (i.e. L1 kernel/userspace)
- Pile of fixes for the management of the VNCR pseudo-TLB, such as
under-invalidations and races with concurrent TLBIs on other vCPUs
- Consolidate the non-protected and pKVM view of ICH_VTR_EL2 to a
runtime-patched constant, allowing the same data to be shared with
pKVM prior to dropping host privileges
- Considerable pile of LLM-assisted fixes around the shop but mostly in
the VGIC, our in-kernel generator of bugs (and sometimes interrupts)
----------------------------------------------------------------
Bradley Morgan (2):
KVM: arm64: Skip cache maintenance for non-cacheable pKVM mappings
KVM: arm64: Top up stage-2 memcache for dirty logging faults
Congkai Tan (3):
KVM: arm64: Expose PMMIR_EL1.SLOTS under strict PMUv3 UAPI
KVM: arm64: Advertise STALL_SLOT* in PMCEID1 under strict PMUv3 UAPI
KVM: arm64: Add KVM_ARM_VCPU_PMU_V3_STRICT vCPU feature
Fuad Tabba (21):
KVM: arm64: Drop the unused EL2-side is_created write
KVM: arm64: Remove unreachable early checks in pkvm_init_host_vm()
KVM: arm64: Drop redundant READ_ONCE() in pkvm_hyp_vm_is_created()
KVM: arm64: Sync SCTLR_EL1 when injecting an exception into a pVM
KVM: arm64: Flush external_mdscr_el1 to the pKVM hyp vCPU
KVM: arm64: selftests: Add a userspace watchpoint test
KVM: arm64: Extract MPIDR computation into a shared header
KVM: arm64: Make vcpu_{read,write}_sys_reg available to HYP code
KVM: arm64: Factor out reusable vCPU reset helpers
KVM: arm64: Move PSCI helper functions to a shared header
KVM: arm64: Implement lazy vCPU state sync for non-protected guests
KVM: arm64: Top up the memcache for pKVM permission faults
KVM: arm64: Skip pKVM stage-2 flush when FWB is enabled
KVM: arm64: Don't WARN on pKVM stage-2 map failures
KVM: arm64: Don't advertise eager page splitting under pKVM
KVM: arm64: selftests: Add stage-2 block transition test
KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save
KVM: arm64: vgic: Don't leak the SPI array when init is retried
KVM: arm64: vgic-its: Don't save collections the table cannot hold
KVM: arm64: vgic-its: Point saved ITEs at the next valid entry
KVM: arm64: vgic: Reset in_kernel on private IRQ allocation failure
Kajetan Puchalski (1):
KVM: arm64: vgic: Fix detection of MI on no pending LR
Karl Mehltretter (2):
KVM: arm64: Preserve GPRs for AArch32 CP64 reads generating an UNDEF
KVM: arm64: GICv2: Don't WARN on out-of-range GICV_DIR INTID
Marc Zyngier (48):
KVM: arm64: vgic-v3: Make vtr_to_* helpers use architectural field symbols
KVM: arm64: Move GICv3 broken SEIS implementation detection to a CPU errrata
KVM: arm64: Add a helper providing an inlined literal value for ICH_VTR_EL2
KVM: arm64: Convert most ICH_VTR_EL2 accesses to inlined literal value
KVM: arm64: vgic-v3: Simplify initial GICv3 configuration sampling
KVM: arm64: vgic-v3: Kill kvm_vgic_global_state.ich_vtr_el2
KVM: arm64: Add host and hypervisor vCPU lookup primitives
KVM: arm64: Minimise EL2's exposure of host VGIC state during world switch
KVM: arm64: Add primitives to flush/sync the VGIC state at EL2
arm64: sysreg: Emit RESx/UNKN values for Mapping/Fields definitions
arm64: Update ID_AA64MMFR4_EL1 description to 2026-03 JSON release
KVM: arm64: Merge guest's HCRX_EL2 using NV_HCRX_GUEST_EXCLUDE
KVM: arm64: Drop __HCRX_EL2_* masks
KVM: arm64: Plumb HCRX_EL2.SRMASKEn in HCRX_EL2 sanitisation
KVM: arm64: Classify CPTR_EL2 as a SR_LOC_SPECIAL register
KVM: arm64: Don't evaluate HCR_EL2.NV nor HFGITR_EL2.ERET on ERET fast path
arm64: Add ARM64_HAS_NV2P1 capability
KVM: arm64: Relax CPTR_EL2 handling when FEAT_NV2p1 is present
KVM: arm64: Relax CNTHCTL_EL2 handling when FEAT_NV2p1 is present
KVM: arm64: Expose FEAT_NV2p1 to NV guests
arm64: Add FEAT_NV2p1 detection
arm64: sysreg: Add NVHCR_EL2 description as a mirror of HCR_EL2
arm64: sysreg: Add HCRX_EL2 bits related to FEAT_NV3
arm64: Add ARM64_HAS_NV3 capability
KVM: arm64: Split NV-specific exit fixups from the non-NV handling
KVM: arm64: Add NV3 control bits to HCRX_EL2 sanitisation
KVM: arm64: Add kvm_has_nv{2,3}() predicates
KVM: arm64: Make HCR_EL2 a non-VNCR register
KVM: arm64: Add sanitisation for NVHCR_EL2
KVM: arm64: Add NVHCR_EL2 handling to the sysreg array
KVM: arm64: Add routing for NVHCR_EL2 trap
KVM: arm64: Add NVHCR_EL2 context switching
KVM: arm64: Engage NV3 ERET trap elision
KVM: arm64: Engage NV3 TLBI trap elision
KVM: arm64: Add FEAT_NV3 detection
KVM: arm64: Expose FEAT_NV3 to guests
KVM: arm64: selftest: Add NVHCR_EL2 to get-reg-list
arm64: Add override for ID_AA64MMFR4_EL1.NV_frac
KVM: arm64: Remove VM-wide VNCR mapping counter
KVM: arm64: Handle negative S1 walk levels in VNCR TLB size evaluation
KVM: arm64: Consider SCTLR_EL2.M when mapping the L1 VNCR page
KVM: arm64: Correctly handle end of VA space TLBI invalidation
KVM: arm64: Handle VNCR TLB invalidation race with vcpu_put() VNCR unmapping
KVM: arm64: Sign-extend VA for range-based TLBI invalidation
KVM: arm64: Make VNCR invalidation participate in MMU invalidation retry
KVM: arm64: Add VNCR TLB tracking again
KVM: arm64: Make timer_get_offset() work in all contexts
KVM: arm64: Correctly cap TLBI Range to the architural limit
Mostafa Saleh (4):
KVM: arm64: Avoid naming collision in tracing
KVM: arm64: Optimize protected mode with FWB and DIC
KVM: arm64: Fix timer offsets for non-protected VMs
KVM: arm64: Fix hvhe and broken CNTVOFF_EL2
Oliver Upton (7):
KVM: arm64: Ignore writes to PMCR_EL0.N when using strict UAPI
Merge branch 'kvm-arm64/pmu-7.3' into next
Merge branch 'kvm-arm64/pkvm-7.3' into next
Merge branch 'kvm-arm64/feat-nv3' into next
Merge branch 'kvm-arm64/vncr-fixes' into next
Merge branch 'kvm-arm64/vtr-patch' into next
Merge branch 'kvm-arm64/misc-7.3' into next
Qihang (1):
KVM: arm64: vgic-v3: take an LPI reference in vgic_v3_save_pending_tables
Sascha Bischoff (4):
KVM: arm64: vgic: Free gic_kvm_info on initialization failure
KVM: arm64: vgic: Prevent speculative SPI array underflow
KVM: arm64: vgic: Reject out-of-range GICv5 PPI IDs
KVM: arm64: Validate GICv5 timer PPIs before claiming ownership
Vincent Donnefort (1):
KVM: arm64: Drop %pB on nVHE panic when stage-2 is active
Will Deacon (1):
KVM: arm64: Avoid mismatched accesses to 'struct kvm_nvhe_init_params'
Documentation/virt/kvm/api.rst | 11 +
Documentation/virt/kvm/devices/vcpu.rst | 11 +-
arch/arm64/include/asm/cpufeature.h | 1 +
arch/arm64/include/asm/kvm_arm.h | 27 +-
arch/arm64/include/asm/kvm_asm.h | 4 +-
arch/arm64/include/asm/kvm_emulate.h | 107 +++++++-
arch/arm64/include/asm/kvm_host.h | 14 +-
arch/arm64/include/asm/kvm_nested.h | 20 ++
arch/arm64/include/asm/kvm_pkvm.h | 8 +-
arch/arm64/include/asm/vncr_mapping.h | 2 +-
arch/arm64/include/uapi/asm/kvm.h | 1 +
arch/arm64/kernel/asm-offsets.c | 1 -
arch/arm64/kernel/cpu_errata.c | 17 +-
arch/arm64/kernel/cpufeature.c | 18 +-
arch/arm64/kernel/image-vars.h | 2 +
arch/arm64/kernel/pi/idreg-override.c | 10 +
arch/arm64/kvm/arch_timer.c | 15 +-
arch/arm64/kvm/arm.c | 26 +-
arch/arm64/kvm/at.c | 2 -
arch/arm64/kvm/config.c | 27 +-
arch/arm64/kvm/emulate-nested.c | 18 +-
arch/arm64/kvm/handle_exit.c | 40 ++-
arch/arm64/kvm/hyp/exception.c | 34 +--
arch/arm64/kvm/hyp/include/hyp/switch.h | 42 ++--
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 11 +
arch/arm64/kvm/hyp/include/nvhe/clock.h | 8 +-
arch/arm64/kvm/hyp/nvhe/clock.c | 4 +-
arch/arm64/kvm/hyp/nvhe/hyp-init.S | 11 +-
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 271 ++++++++++++++++++---
arch/arm64/kvm/hyp/nvhe/mem_protect.c | 7 +
arch/arm64/kvm/hyp/nvhe/pkvm.c | 15 +-
arch/arm64/kvm/hyp/nvhe/sys_regs.c | 5 +-
arch/arm64/kvm/hyp/nvhe/timer-sr.c | 10 +-
arch/arm64/kvm/hyp/nvhe/trace.c | 4 +-
arch/arm64/kvm/hyp/vgic-v3-sr.c | 43 +---
arch/arm64/kvm/hyp/vhe/switch.c | 62 +++--
arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 21 +-
arch/arm64/kvm/mmu.c | 9 +-
arch/arm64/kvm/nested.c | 190 ++++++++++-----
arch/arm64/kvm/pkvm.c | 34 +--
arch/arm64/kvm/pmu-emul.c | 54 +++-
arch/arm64/kvm/psci.c | 30 +--
arch/arm64/kvm/reset.c | 60 +----
arch/arm64/kvm/sys_regs.c | 152 ++++++++++--
arch/arm64/kvm/sys_regs.h | 19 ++
arch/arm64/kvm/vgic-sys-reg-v3.c | 8 +-
arch/arm64/kvm/vgic/vgic-init.c | 8 +-
arch/arm64/kvm/vgic/vgic-its.c | 26 +-
arch/arm64/kvm/vgic/vgic-v2.c | 3 +-
arch/arm64/kvm/vgic/vgic-v3-nested.c | 2 +-
arch/arm64/kvm/vgic/vgic-v3.c | 107 +++++---
arch/arm64/kvm/vgic/vgic-v5.c | 5 +-
arch/arm64/kvm/vgic/vgic.c | 7 +-
arch/arm64/kvm/vgic/vgic.h | 19 +-
arch/arm64/tools/cpucaps | 3 +
arch/arm64/tools/gen-sysreg.awk | 8 +-
arch/arm64/tools/sysreg | 42 +++-
include/kvm/arm_arch_timer.h | 34 ++-
include/kvm/arm_pmu.h | 4 +
include/kvm/arm_psci.h | 27 ++
include/kvm/arm_vgic.h | 4 +-
include/uapi/linux/kvm.h | 1 +
tools/testing/selftests/kvm/Makefile.kvm | 1 +
.../testing/selftests/kvm/arm64/debug-exceptions.c | 41 ++++
tools/testing/selftests/kvm/arm64/get-reg-list.c | 3 +
.../selftests/kvm/arm64/stage2_block_transitions.c | 226 +++++++++++++++++
66 files changed, 1580 insertions(+), 477 deletions(-)
create mode 100644 tools/testing/selftests/kvm/arm64/stage2_block_transitions.c
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-20 4:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-20 4:47 [GIT PULL] KVM/arm64 changes for 7.3 Oliver Upton
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.