[GIT PULL] KVM/arm64 updates for 7.2

Paolo Bonzini pbonzini at redhat.com
Fri Jun 12 01:52:35 PDT 2026


On Fri, Jun 12, 2026 at 10:48 AM Marc Zyngier <maz at 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 at 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(-)
>




More information about the linux-arm-kernel mailing list