[GIT PULL] KVM fixes for Linux 7.2-rc4
From: Paolo Bonzini
Date: Thu Jul 16 2026 - 03:47:07 EST
Linus,
The following changes since commit a13c140cc289c0b7b3770bce5b3ad42ab35074aa:
Linux 7.2-rc3 (2026-07-12 14:16:39 -0700)
are available in the Git repository at:
https://git.kernel.org/pub/scm/virt/kvm/kvm.git tags/for-linus
for you to fetch changes up to 25f744ffa0c8e799e06250ce2e618367b166b0d4:
KVM: SVM: Bump asid_generation on CPU online to avoid ASID collision after hotplug (2026-07-16 08:55:03 +0200)
A larger pull request with everything that accumulated while I was
away from git.
Paolo
----------------------------------------------------------------
Arm:
- Fix an accounting buglet when reclaiming pages from a protected guest
- Fix a bunch of architectural compliance issues when injecting a
synthesised exception, most of which were missing the PSTATE.IL bit
indicating a 32bit-wide instruction
- Another set of fixes addressing issues with translation of VNCR_EL2,
including corner cases where the guest point that register at a RO
page...
- Don't warn when trapping accesses to ZCR_EL2 from an L2 guest, as
that's not unexpected at all
- Address a bunch of races with LPI migration vs LPIs being disabled
- Fix a total howler of a bug combining FEAT_MOPS and NV, resulting in
exception returning in the wrong place...
- Move locking for kvm_io_bus_get_dev() into the caller, ensuring
race-free checks that the returned object is of the correct type
- Fix initialisation of the page-table walk level when relaxing
permissions
- Correctly update the XN attribute when relaxing permissions
- Fix the sign extension of loads from emulated MMIO regions
- Assorted collection of fixes for pKVM's FFA proxy, together with a
couple of FFA driver adjustments
- Coerce Fuad Tabba into a reviewer role, and may his Inbox catch fire!
s390:
- more gmap KVM memory management fixes
- PCI passthru fixes
x86:
- Fix a bug where KVM will trigger a UAF if updating IOMMU IRTEs fails when
registering an IRQ-bypass producer.
- Ignore pending PV EOI instead of BUG()ing the host if the feature was
disabled by the guest.
- Fix nVMX bugs where KVM would run L1 with an L1-controlled CR3 after a
failed "late" consistency check when KVM is NOT using EPT.
- Disallow intra-host migration/mirroring of SNP VMs as KVM doesn't yet
support moving/mirroring SNP state.
- Fix a TOCTOU bug in KVM's handling of the "trusted" CPUID for TDX guests.
- Fix a NULL pointer deref in trace_kvm_inj_exception() where a change to the
core infrastructure missed KVM's unique (ab)use of __print_symbolic().
- Put vmcs12 pages if nested VM-Enter fails due to invalid guest state
- Fix TLB conflicts between two VMs if one of them VM is run on a CPU before
and after it is hotplugged.
----------------------------------------------------------------
Atish Patra (2):
KVM: SEV: Do not allow intra-host migration/mirroring of SNP VMs
KVM: selftests: Verify SNP VMs are rejected from migration and mirroring
Binbin Wu (1):
KVM: TDX: Reject concurrent change to CPUID entry count
Bradley Morgan (1):
KVM: arm64: account pKVM reclaim against the VM mm
Claudio Imbrenda (3):
KVM: s390: vsie: Avoid potential deadlock with real spaces
KVM: s390: Fix dat_crste_walk_range() early return
KVM: s390: Improve kvm_s390_vm_stop_migration()
Daniel Paziyski (1):
KVM: x86: Fix null pointer deref due to dummy array in trace_kvm_inj_exception()
Fuad Tabba (13):
KVM: arm64: nv: Write ESR_EL2 for injected nested SError exceptions
KVM: arm64: Sync SPSR_EL1 when injecting an exception into a pVM
KVM: arm64: nv: Fix PSTATE construction on illegal exception return
KVM: arm64: Add Fuad Tabba as a reviewer
KVM: arm64: Set ESR_ELx.IL for injected undefined exceptions at EL2
KVM: arm64: Unconditionally set IL for injected undefined exceptions
KVM: arm64: Unconditionally set IL for injected abort exceptions
KVM: arm64: Set IL for injected FPAC exceptions during ERET emulation
KVM: arm64: Set IL for emulated SError injection
KVM: arm64: Set IL for nested SError injection
KVM: arm64: Set IL in fake ESR for pKVM memory sharing exit
KVM: arm64: Fix sign-extension of MMIO loads
KVM: arm64: selftests: Add MMIO sign-extending load test
Haoxiang Li (1):
KVM: s390: pci: Fix GISC refcount leak on AIF enable failure
Hyunwoo Kim (1):
KVM: arm64: vgic: Check the interrupt is still ours before migrating it
Marc Zyngier (3):
KVM: arm64: vgic: Handle race between interrupt affinity change and LPI disabling
KVM: Move kvm_io_bus_get_dev() locking responsibilities to callers
KVM: arm64: Fix propagation of TLBI level in kvm_pgtable_stage2_relax_perms()
Matthew Rosato (1):
KVM: s390: pci: Fix handling of AIF enable without AISB
Mostafa Saleh (3):
KVM: arm64: Fix bounds checking in do_ffa_mem_reclaim()
KVM: arm64: Ensure FFA ranges are page aligned
firmware: arm_ffa: Fix out-of-bound writes in ffa_setup_and_transmit()
Nikunj A Dadhania (1):
KVM: SVM: Bump asid_generation on CPU online to avoid ASID collision after hotplug
Oliver Upton (8):
KVM: arm64: nv: Drop bogus WARN for write to ZCR_EL2
KVM: arm64: nv: Respect read-only PFN when mapping L1 VNCR
KVM: arm64: nv: Inject SEA if kvm_translate_vncr() can't resolve PFN
KVM: arm64: nv: Re-translate VNCR before injecting abort
KVM: arm64: nv: Inject SEA if guest VNCR isn't normal memory
KVM: arm64: nv: Mark VM as bugged for unexpected VNCR abort
KVM: arm64: Ensure level is always initialized when relaxing perms
KVM: arm64: Only update XN attr when requested during S2 relaxation
Paolo Bonzini (4):
Merge tag 'kvmarm-fixes-7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
Merge tag 'kvmarm-fixes-7.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
Merge tag 'kvm-x86-fixes-7.2-rc4' of https://github.com/kvm-x86/linux into HEAD
Merge tag 'kvm-s390-master-7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
Sean Christopherson (4):
KVM: x86: Ignore pending PV EOI if the vCPU has since disabled PV EOIs
KVM: nVMX: Move vTPR vs. TPR Threshold consistency check into "normal" checks
KVM: nVMX: Don't use vmcs01.GUEST_CR3 to snapshot L1's CR3 when EPT is disabled
KVM: nVMX: Put vmcs12 pages if nested VM-Enter fails due to invalid guest state
Sebastian Ene (3):
KVM: arm64: Validate the offset to the mem access descriptor
KVM: arm64: Zero out the stack initialized data in the FFA handler
firmware: arm_ffa: Fix Endpoint Memory Access Descriptor offset calculation
Weiming Shi (1):
KVM: arm64: nv: Fix SPSR_EL2 restore in kvm_hyp_handle_mops()
leixiang (1):
KVM: x86: Nullify irqfd->producer if updating IRTE for bypass fails
MAINTAINERS | 1 +
arch/arm64/include/asm/kvm_nested.h | 8 +
arch/arm64/kvm/at.c | 8 -
arch/arm64/kvm/emulate-nested.c | 41 +++-
arch/arm64/kvm/hyp/include/hyp/switch.h | 11 +-
arch/arm64/kvm/hyp/nvhe/ffa.c | 44 ++--
arch/arm64/kvm/hyp/nvhe/pkvm.c | 3 +-
arch/arm64/kvm/hyp/nvhe/sys_regs.c | 3 +-
arch/arm64/kvm/hyp/pgtable.c | 15 +-
arch/arm64/kvm/inject_fault.c | 18 +-
arch/arm64/kvm/mmio.c | 7 +-
arch/arm64/kvm/nested.c | 164 ++++++-------
arch/arm64/kvm/pkvm.c | 2 +-
arch/arm64/kvm/vgic/vgic-its.c | 2 +
arch/arm64/kvm/vgic/vgic.c | 20 +-
arch/s390/kvm/dat.c | 2 +
arch/s390/kvm/gmap.c | 7 +-
arch/s390/kvm/kvm-s390.c | 6 +-
arch/s390/kvm/pci.c | 12 +-
arch/x86/kvm/irq.c | 4 +-
arch/x86/kvm/lapic.c | 8 +-
arch/x86/kvm/svm/sev.c | 6 +-
arch/x86/kvm/svm/svm.c | 7 +-
arch/x86/kvm/trace.h | 2 +-
arch/x86/kvm/vmx/nested.c | 89 ++++---
arch/x86/kvm/vmx/tdx.c | 6 +-
arch/x86/kvm/vmx/vmx.h | 7 +
drivers/firmware/arm_ffa/driver.c | 25 +-
include/linux/arm_ffa.h | 9 +-
tools/testing/selftests/kvm/Makefile.kvm | 1 +
tools/testing/selftests/kvm/arm64/mmio_sign_ext.c | 255 +++++++++++++++++++++
.../testing/selftests/kvm/x86/sev_migrate_tests.c | 47 ++++
virt/kvm/kvm_main.c | 16 +-
33 files changed, 621 insertions(+), 235 deletions(-)
create mode 100644 tools/testing/selftests/kvm/arm64/mmio_sign_ext.c