* [GIT PULL] KVM/arm64 updates for 7.2
@ 2026-06-12 8:48 Marc Zyngier
2026-06-12 8:52 ` Paolo Bonzini
0 siblings, 1 reply; 2+ messages in thread
From: Marc Zyngier @ 2026-06-12 8:48 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Anshuman Khandual, Catalin Marinas, Eric Auger, Fuad Tabba,
Hyunwoo Kim, Jackie Liu, Joey Gouly, Mark Rutland, Oliver Upton,
Sascha Bischoff, Vincent Donnefort, Wei-Lin Chang, Will Deacon,
Zenghui Yu, Steffen Eiden, Suzuki K Poulose, Zenghui Yu, kvmarm,
kvm, linux-arm-kernel
Paolo,
This is a bit of an odd merge window on the KVM/arm64 front. There is
absolutely no new feature in the pull request. It is purely fixes,
because it is simply becoming too hard to review new stuff when so
many AI-fuelled fixes hit the list. And even then, I've arbitrarily
tagged the branch today, knowing that there is quite a backlog of
fixes that I will send very shortly, probably before -rc1.
So here it is: only fixes and very minor improvements, all over the
place. Details in the tag below.
Please pull,
M.
The following changes since commit 5200f5f493f79f14bbdc349e402a40dfb32f23c8:
Linux 7.1-rc4 (2026-05-17 13:59:58 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-7.2
for you to fetch changes up to 1ee27dacbe5dc4def481794d899d67b0d4570094:
Merge branch kvm-arm64/nv-mmu-7.2 into kvmarm-master/next (2026-06-12 09:29:34 +0100)
----------------------------------------------------------------
KVM/arm64 updates for 7.2
* New features:
- None. Zilch. Nada. Que dalle.
* Fixes and other improvements:
- Significant cleanup of the vgic-v5 PPI support which was merged in
7.1. This makes the code more maintainable, and squashes a couple
of bugs in the meantime.
- Set of fixes for the handling of the MMU in an NV context,
particularly VNCR-triggered faults. S1POE support is fixed
as well.
- Large set of pKVM fixes, mostly addressing recurring issues
around hypervisor tracking of donated pages in obscure cases
where the donation could fail and leave things in a bizarre
state.
- Fixes for the so-called "lazy vgic init", which resulted in
sleeping operations in non-preemptible sections. This turned
out to be far more invasive than initially expected...
- Reduce the overhead of L1/L2 context switch by not touching
the FP registers.
- Fix the way non-implemented page sizes are dealt with when
a guest insist on using them for S2 translation.
- The usual set of low-impact fixes and cleanups all over the map.
----------------------------------------------------------------
Fuad Tabba (5):
KVM: arm64: Guard against NULL vcpu on VHE hyp panic path
KVM: arm64: Fix __deactivate_fgt macro parameter typo
KVM: arm64: Seed pkvm_ownership_selftest vcpu memcache
KVM: arm64: Pre-check vcpu memcache for host->guest share
KVM: arm64: Pre-check vcpu memcache for host->guest donate
Hyunwoo Kim (2):
KVM: arm64: Clear __hyp_running_vcpu when flushing the pKVM hyp vCPU
KVM: arm64: Bound used_lrs when flushing the pKVM hyp vCPU
Jackie Liu (1):
KVM: arm64: vgic-its: Make ABI commit helpers return void
Marc Zyngier (29):
KVM: arm64: nv: Track L2 to L1 exception emulation
KVM: arm64: nv: Don't save/restore FP register during a nested ERET or exception
KVM: arm64: timer: Repaint kvm_timer_{should,irq_can}_fire() to kvm_timer_{pending,enabled}()
KVM: arm64: Simplify userspace notification of interrupt state
KVM: arm64: timer: Kill the per-timer irq level cache
KVM: arm64: pmu: Kill the PMU interrupt level cache
KVM: arm64: vgic-v2: Force vgic init on injection outside the run loop
KVM: arm64: vgic-v2: Don't init the vgic on in-kernel interrupt injection
KVM: arm64: vgic-v5: Add for_each_visible_v5_ppi() iterator
KVM: arm64: vgic-v5: Move PPI caps into kvm_vgic_global_state
KVM: arm64: vgic-v5: Remove use of __assign_bit() with a constant
KVM: arm64: vgic-v5: Drop pointless ARM64_HAS_GICV5_CPUIF check
KVM: arm64: vgic: Constify struct irq_ops usage
KVM: arm64: vgic: Consolidate vgic_allocate_private_irqs_locked()
KVM: arm64: vgic-v5: Drop defensive checks from vgic_v5_ppi_queue_irq_unlock()
KVM: arm64: vgic: Rationalise per-CPU irq accessor
KVM: arm64: vgic-v5: Limit support to 64 PPIs
KVM: arm64: Key CPTR_EL2.E0POE propagation on FEAT_S1POE
KVM: arm64: Wire AT S1E1A in the system instruction handling table
arm64: cpufeature: Expose ID_AA64ISAR2_EL1.ATS1A to KVM
KVM: arm64: nv: Avoid dereferencing NULL VNCR pseudo-TLB
KVM: arm64: nv: Hold kvm->mmu_lock while initialising vcpu->arch.vncr_tlb
Merge branch kvm-arm64/no-lazy-vgic-init into kvmarm-master/next
Merge branch kvm-arm64/nv-fp-elision into kvmarm-master/next
Merge branch kvm-arm64/nv-granule-sizes into kvmarm-master/next
Merge branch kvm-arm64/pkvm-fixes-7.2 into kvmarm-master/next
Merge branch kvm-arm64/vgic-v5-PPI-fixes into kvmarm-master/next
Merge branch kvm-arm64/misc-7.2 into kvmarm-master/next
Merge branch kvm-arm64/nv-mmu-7.2 into kvmarm-master/next
Oliver Upton (5):
KVM: arm64: Don't leak PFN when kvm_translate_vncr() races MMU notifier
KVM: arm64: nv: Fully update VNCR fixmap state in kvm_translate_vncr()
KVM: arm64: nv: Inject SEA TTW when desc update can't write to GPA
KVM: arm64: Restart instruction upon race in __kvm_at_s12()
KVM: arm64: nv: Restart stage-1 walk if stage-2 desc update fails
Sascha Bischoff (9):
KVM: arm64: vgic-v5: Add missing trap handing for NV triage
KVM: arm64: vgic-v5: Atomically assign bits to PPI DVI bitmap
KVM: arm64: selftests: Add missing GIC CDEN to no-vgic-v5 selftest
KVM: arm64: selftests: Cleanup unused vars in GICv5 PPI selftest
KVM: arm64: selftests: Improve error handling for GICv5 PPI selftest
Documentation: KVM: Fix typos in VGICv5 documentation
Documentation: KVM: Clarify that PMU_V3_IRQ IntID requirements for GICv5
irqchip/gic-v5: Immediately exec priority drop following activate
KVM: arm64: Fix arch timer interrupts for GICv3-on-GICv5 guests
Vincent Donnefort (4):
KVM: arm64: Reset page order in pKVM hyp_pool
KVM: arm64: Fix __pkvm_init_vm error path
KVM: arm64: Add fail-safe for refcounted pages in __pkvm_hyp_donate_host
KVM: arm64: Set a Linux errno on SMCCC error in kvm_call_hyp_nvhe()
Wei-Lin Chang (5):
KVM: arm64: nv: Rename vtcr_to_walk_info() to setup_s2_walk()
KVM: arm64: Factor out TG0/1 decoding of VTCR and TCR
KVM: arm64: nv: Use literal granule size in TLBI range calculation
KVM: arm64: Fallback to a supported value for unsupported guest TGx
KVM: arm64: Fix block mapping validity check in stage-1 walker
Will Deacon (1):
KVM: arm64: Don't populate TPIDR_EL2 in finalise_el2()
Zenghui Yu (Huawei) (1):
KVM: arm64: Remove @arch from __load_stage2()
tabba@google.com (4):
KVM: arm64: Flush HCR_EL2.VSE to deliver SErrors to pKVM guests
KVM: arm64: Free hyp-share tracking node when share hypercall fails
KVM: arm64: Avoid host/hyp share desync on unshare hypercall failure
KVM: arm64: Roll back partial shares on kvm_share_hyp() failure
Documentation/virt/kvm/devices/arm-vgic-v5.rst | 6 +-
Documentation/virt/kvm/devices/vcpu.rst | 7 +-
arch/arm64/include/asm/kvm_host.h | 8 +-
arch/arm64/include/asm/kvm_hyp.h | 1 +
arch/arm64/include/asm/kvm_mmu.h | 3 +-
arch/arm64/kernel/cpufeature.c | 1 +
arch/arm64/kernel/hyp-stub.S | 4 +-
arch/arm64/kvm/arch_timer.c | 137 +++++++--------
arch/arm64/kvm/arm.c | 41 +++--
arch/arm64/kvm/at.c | 146 +++++++++++----
arch/arm64/kvm/emulate-nested.c | 12 ++
arch/arm64/kvm/fpsimd.c | 26 +++
arch/arm64/kvm/hyp/include/hyp/switch.h | 2 +-
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 3 +-
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 21 ++-
arch/arm64/kvm/hyp/nvhe/mem_protect.c | 37 ++--
arch/arm64/kvm/hyp/nvhe/page_alloc.c | 21 ++-
arch/arm64/kvm/hyp/nvhe/pkvm.c | 4 +-
arch/arm64/kvm/hyp/nvhe/switch.c | 2 +-
arch/arm64/kvm/hyp/nvhe/tlb.c | 4 +-
arch/arm64/kvm/hyp/vgic-v5-sr.c | 82 ++-------
arch/arm64/kvm/hyp/vhe/switch.c | 2 +-
arch/arm64/kvm/hyp/vhe/tlb.c | 4 +-
arch/arm64/kvm/mmu.c | 39 ++++-
arch/arm64/kvm/nested.c | 234 ++++++++++++++++---------
arch/arm64/kvm/pmu-emul.c | 31 +---
arch/arm64/kvm/sys_regs.c | 20 +--
arch/arm64/kvm/vgic/vgic-init.c | 45 ++---
arch/arm64/kvm/vgic/vgic-irqfd.c | 6 +
arch/arm64/kvm/vgic/vgic-its.c | 21 +--
arch/arm64/kvm/vgic/vgic-kvm-device.c | 9 +-
arch/arm64/kvm/vgic/vgic-v5.c | 51 ++----
arch/arm64/kvm/vgic/vgic.c | 33 ++--
arch/arm64/kvm/vgic/vgic.h | 3 +
drivers/irqchip/irq-gic-v5.c | 13 +-
include/kvm/arm_arch_timer.h | 7 +-
include/kvm/arm_pmu.h | 5 +-
include/kvm/arm_vgic.h | 19 +-
tools/testing/selftests/kvm/arm64/no-vgic.c | 1 +
tools/testing/selftests/kvm/arm64/vgic_v5.c | 10 +-
40 files changed, 651 insertions(+), 470 deletions(-)
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [GIT PULL] KVM/arm64 updates for 7.2
2026-06-12 8:48 [GIT PULL] KVM/arm64 updates for 7.2 Marc Zyngier
@ 2026-06-12 8:52 ` Paolo Bonzini
0 siblings, 0 replies; 2+ messages in thread
From: Paolo Bonzini @ 2026-06-12 8:52 UTC (permalink / raw)
To: Marc Zyngier
Cc: Anshuman Khandual, Catalin Marinas, Eric Auger, Fuad Tabba,
Hyunwoo Kim, Jackie Liu, Joey Gouly, Mark Rutland, Oliver Upton,
Sascha Bischoff, Vincent Donnefort, Wei-Lin Chang, Will Deacon,
Zenghui Yu, Steffen Eiden, Suzuki K Poulose, Zenghui Yu, kvmarm,
kvm, linux-arm-kernel
On Fri, Jun 12, 2026 at 10:48 AM Marc Zyngier <maz@kernel.org> wrote:
>
> Paolo,
>
> This is a bit of an odd merge window on the KVM/arm64 front. There is
> absolutely no new feature in the pull request. It is purely fixes,
> because it is simply becoming too hard to review new stuff when so
> many AI-fuelled fixes hit the list. And even then, I've arbitrarily
> tagged the branch today, knowing that there is quite a backlog of
> fixes that I will send very shortly, probably before -rc1.
No problem. Since I usually wait for the arch code to be merged before
sending my PRs, you have almost a week to send them and have them
included in the very first PRs.
Pulled these for now, thanks.
Paolo
> So here it is: only fixes and very minor improvements, all over the
> place. Details in the tag below.
>
> Please pull,
>
> M.
>
> The following changes since commit 5200f5f493f79f14bbdc349e402a40dfb32f23c8:
>
> Linux 7.1-rc4 (2026-05-17 13:59:58 -0700)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git tags/kvmarm-7.2
>
> for you to fetch changes up to 1ee27dacbe5dc4def481794d899d67b0d4570094:
>
> Merge branch kvm-arm64/nv-mmu-7.2 into kvmarm-master/next (2026-06-12 09:29:34 +0100)
>
> ----------------------------------------------------------------
> KVM/arm64 updates for 7.2
>
> * New features:
>
> - None. Zilch. Nada. Que dalle.
>
> * Fixes and other improvements:
>
> - Significant cleanup of the vgic-v5 PPI support which was merged in
> 7.1. This makes the code more maintainable, and squashes a couple
> of bugs in the meantime.
>
> - Set of fixes for the handling of the MMU in an NV context,
> particularly VNCR-triggered faults. S1POE support is fixed
> as well.
>
> - Large set of pKVM fixes, mostly addressing recurring issues
> around hypervisor tracking of donated pages in obscure cases
> where the donation could fail and leave things in a bizarre
> state.
>
> - Fixes for the so-called "lazy vgic init", which resulted in
> sleeping operations in non-preemptible sections. This turned
> out to be far more invasive than initially expected...
>
> - Reduce the overhead of L1/L2 context switch by not touching
> the FP registers.
>
> - Fix the way non-implemented page sizes are dealt with when
> a guest insist on using them for S2 translation.
>
> - The usual set of low-impact fixes and cleanups all over the map.
>
> ----------------------------------------------------------------
> Fuad Tabba (5):
> KVM: arm64: Guard against NULL vcpu on VHE hyp panic path
> KVM: arm64: Fix __deactivate_fgt macro parameter typo
> KVM: arm64: Seed pkvm_ownership_selftest vcpu memcache
> KVM: arm64: Pre-check vcpu memcache for host->guest share
> KVM: arm64: Pre-check vcpu memcache for host->guest donate
>
> Hyunwoo Kim (2):
> KVM: arm64: Clear __hyp_running_vcpu when flushing the pKVM hyp vCPU
> KVM: arm64: Bound used_lrs when flushing the pKVM hyp vCPU
>
> Jackie Liu (1):
> KVM: arm64: vgic-its: Make ABI commit helpers return void
>
> Marc Zyngier (29):
> KVM: arm64: nv: Track L2 to L1 exception emulation
> KVM: arm64: nv: Don't save/restore FP register during a nested ERET or exception
> KVM: arm64: timer: Repaint kvm_timer_{should,irq_can}_fire() to kvm_timer_{pending,enabled}()
> KVM: arm64: Simplify userspace notification of interrupt state
> KVM: arm64: timer: Kill the per-timer irq level cache
> KVM: arm64: pmu: Kill the PMU interrupt level cache
> KVM: arm64: vgic-v2: Force vgic init on injection outside the run loop
> KVM: arm64: vgic-v2: Don't init the vgic on in-kernel interrupt injection
> KVM: arm64: vgic-v5: Add for_each_visible_v5_ppi() iterator
> KVM: arm64: vgic-v5: Move PPI caps into kvm_vgic_global_state
> KVM: arm64: vgic-v5: Remove use of __assign_bit() with a constant
> KVM: arm64: vgic-v5: Drop pointless ARM64_HAS_GICV5_CPUIF check
> KVM: arm64: vgic: Constify struct irq_ops usage
> KVM: arm64: vgic: Consolidate vgic_allocate_private_irqs_locked()
> KVM: arm64: vgic-v5: Drop defensive checks from vgic_v5_ppi_queue_irq_unlock()
> KVM: arm64: vgic: Rationalise per-CPU irq accessor
> KVM: arm64: vgic-v5: Limit support to 64 PPIs
> KVM: arm64: Key CPTR_EL2.E0POE propagation on FEAT_S1POE
> KVM: arm64: Wire AT S1E1A in the system instruction handling table
> arm64: cpufeature: Expose ID_AA64ISAR2_EL1.ATS1A to KVM
> KVM: arm64: nv: Avoid dereferencing NULL VNCR pseudo-TLB
> KVM: arm64: nv: Hold kvm->mmu_lock while initialising vcpu->arch.vncr_tlb
> Merge branch kvm-arm64/no-lazy-vgic-init into kvmarm-master/next
> Merge branch kvm-arm64/nv-fp-elision into kvmarm-master/next
> Merge branch kvm-arm64/nv-granule-sizes into kvmarm-master/next
> Merge branch kvm-arm64/pkvm-fixes-7.2 into kvmarm-master/next
> Merge branch kvm-arm64/vgic-v5-PPI-fixes into kvmarm-master/next
> Merge branch kvm-arm64/misc-7.2 into kvmarm-master/next
> Merge branch kvm-arm64/nv-mmu-7.2 into kvmarm-master/next
>
> Oliver Upton (5):
> KVM: arm64: Don't leak PFN when kvm_translate_vncr() races MMU notifier
> KVM: arm64: nv: Fully update VNCR fixmap state in kvm_translate_vncr()
> KVM: arm64: nv: Inject SEA TTW when desc update can't write to GPA
> KVM: arm64: Restart instruction upon race in __kvm_at_s12()
> KVM: arm64: nv: Restart stage-1 walk if stage-2 desc update fails
>
> Sascha Bischoff (9):
> KVM: arm64: vgic-v5: Add missing trap handing for NV triage
> KVM: arm64: vgic-v5: Atomically assign bits to PPI DVI bitmap
> KVM: arm64: selftests: Add missing GIC CDEN to no-vgic-v5 selftest
> KVM: arm64: selftests: Cleanup unused vars in GICv5 PPI selftest
> KVM: arm64: selftests: Improve error handling for GICv5 PPI selftest
> Documentation: KVM: Fix typos in VGICv5 documentation
> Documentation: KVM: Clarify that PMU_V3_IRQ IntID requirements for GICv5
> irqchip/gic-v5: Immediately exec priority drop following activate
> KVM: arm64: Fix arch timer interrupts for GICv3-on-GICv5 guests
>
> Vincent Donnefort (4):
> KVM: arm64: Reset page order in pKVM hyp_pool
> KVM: arm64: Fix __pkvm_init_vm error path
> KVM: arm64: Add fail-safe for refcounted pages in __pkvm_hyp_donate_host
> KVM: arm64: Set a Linux errno on SMCCC error in kvm_call_hyp_nvhe()
>
> Wei-Lin Chang (5):
> KVM: arm64: nv: Rename vtcr_to_walk_info() to setup_s2_walk()
> KVM: arm64: Factor out TG0/1 decoding of VTCR and TCR
> KVM: arm64: nv: Use literal granule size in TLBI range calculation
> KVM: arm64: Fallback to a supported value for unsupported guest TGx
> KVM: arm64: Fix block mapping validity check in stage-1 walker
>
> Will Deacon (1):
> KVM: arm64: Don't populate TPIDR_EL2 in finalise_el2()
>
> Zenghui Yu (Huawei) (1):
> KVM: arm64: Remove @arch from __load_stage2()
>
> tabba@google.com (4):
> KVM: arm64: Flush HCR_EL2.VSE to deliver SErrors to pKVM guests
> KVM: arm64: Free hyp-share tracking node when share hypercall fails
> KVM: arm64: Avoid host/hyp share desync on unshare hypercall failure
> KVM: arm64: Roll back partial shares on kvm_share_hyp() failure
>
> Documentation/virt/kvm/devices/arm-vgic-v5.rst | 6 +-
> Documentation/virt/kvm/devices/vcpu.rst | 7 +-
> arch/arm64/include/asm/kvm_host.h | 8 +-
> arch/arm64/include/asm/kvm_hyp.h | 1 +
> arch/arm64/include/asm/kvm_mmu.h | 3 +-
> arch/arm64/kernel/cpufeature.c | 1 +
> arch/arm64/kernel/hyp-stub.S | 4 +-
> arch/arm64/kvm/arch_timer.c | 137 +++++++--------
> arch/arm64/kvm/arm.c | 41 +++--
> arch/arm64/kvm/at.c | 146 +++++++++++----
> arch/arm64/kvm/emulate-nested.c | 12 ++
> arch/arm64/kvm/fpsimd.c | 26 +++
> arch/arm64/kvm/hyp/include/hyp/switch.h | 2 +-
> arch/arm64/kvm/hyp/include/nvhe/mem_protect.h | 3 +-
> arch/arm64/kvm/hyp/nvhe/hyp-main.c | 21 ++-
> arch/arm64/kvm/hyp/nvhe/mem_protect.c | 37 ++--
> arch/arm64/kvm/hyp/nvhe/page_alloc.c | 21 ++-
> arch/arm64/kvm/hyp/nvhe/pkvm.c | 4 +-
> arch/arm64/kvm/hyp/nvhe/switch.c | 2 +-
> arch/arm64/kvm/hyp/nvhe/tlb.c | 4 +-
> arch/arm64/kvm/hyp/vgic-v5-sr.c | 82 ++-------
> arch/arm64/kvm/hyp/vhe/switch.c | 2 +-
> arch/arm64/kvm/hyp/vhe/tlb.c | 4 +-
> arch/arm64/kvm/mmu.c | 39 ++++-
> arch/arm64/kvm/nested.c | 234 ++++++++++++++++---------
> arch/arm64/kvm/pmu-emul.c | 31 +---
> arch/arm64/kvm/sys_regs.c | 20 +--
> arch/arm64/kvm/vgic/vgic-init.c | 45 ++---
> arch/arm64/kvm/vgic/vgic-irqfd.c | 6 +
> arch/arm64/kvm/vgic/vgic-its.c | 21 +--
> arch/arm64/kvm/vgic/vgic-kvm-device.c | 9 +-
> arch/arm64/kvm/vgic/vgic-v5.c | 51 ++----
> arch/arm64/kvm/vgic/vgic.c | 33 ++--
> arch/arm64/kvm/vgic/vgic.h | 3 +
> drivers/irqchip/irq-gic-v5.c | 13 +-
> include/kvm/arm_arch_timer.h | 7 +-
> include/kvm/arm_pmu.h | 5 +-
> include/kvm/arm_vgic.h | 19 +-
> tools/testing/selftests/kvm/arm64/no-vgic.c | 1 +
> tools/testing/selftests/kvm/arm64/vgic_v5.c | 10 +-
> 40 files changed, 651 insertions(+), 470 deletions(-)
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-12 8:53 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-12 8:48 [GIT PULL] KVM/arm64 updates for 7.2 Marc Zyngier
2026-06-12 8:52 ` Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox