All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.