[PATCH v1 00/10] KVM: arm64: Nested stage-2 walk error handling and other small fixes

From: Fuad Tabba

Date: Mon Sep 28 2026 - 11:32:24 EST


Hi folks,

Small KVM/arm64 fixes that came out of reviewing Karl's SMCCC filter
series [1], and it just kept growing.

The first two are WARNs that userspace or a guest can trigger: the
SMCCC filter one on an allocation failure userspace can force with a
memory cgroup limit, which Sashiko raised [2], the nested one when an
L1 guest programs an invalid VTCR_EL2. Patches 3 and 4 are the same
walk's return values. With an invalid VTCR_EL2 or a stage-2 descriptor
KVM can't read, AT S12E{0,1}{R,W} was retried forever instead of
retiring with the fault in PAR_EL1. Reporting the unreadable descriptor
as a Data Abort instead, for the stage-1 walks too, is a separate
change I'll send later. Patch 5 extends the AT selftest to cover the
SL0 case.

The three documentation patches fix identifiers in api.rst that don't
exist anywhere in the tree, and the last two fix selftest leaks.

Based on Linux 7.3-rc3 (fd73f4a665989; also applies to torvalds/master
fd179f8a05be3).

Cheers,
/fuad

[1] https://lore.kernel.org/all/20260829054856.70549-1-kmehltretter@xxxxxxxxx/
[2] https://lore.kernel.org/all/20260829055809.29AD31F000E9@xxxxxxxxxxxxxxx/

Fuad Tabba (10):
KVM: arm64: Don't WARN on SMCCC filter reserved range allocation
failure
KVM: arm64: nv: Don't WARN on an invalid VTCR_EL2
KVM: arm64: nv: Don't loop on AT S12E{0,1}{R,W} with an invalid
VTCR_EL2
KVM: arm64: nv: Return a failed stage-2 descriptor read as a fault
KVM: arm64: selftests: Test AT S12E1R with an invalid VTCR_EL2.SL0
Documentation: KVM: Fix the name of the SMCCC filter attribute
Documentation: KVM: Fix the name of KVM_ARM_SET_COUNTER_OFFSET
Documentation: KVM: Fix the name of KVM_ARM_FEATURE_ID_RANGE_IDX
KVM: arm64: selftests: Free the VMs in smccc_filter and psci_test
KVM: arm64: selftests: Free the thread arrays in vgic_lpi_stress

Documentation/virt/kvm/api.rst | 6 ++--
arch/arm64/kvm/hypercalls.c | 2 +-
arch/arm64/kvm/nested.c | 11 +++-----
tools/testing/selftests/kvm/arm64/at.c | 28 +++++++++++++++++++
tools/testing/selftests/kvm/arm64/psci_test.c | 5 +++-
.../selftests/kvm/arm64/smccc_filter.c | 2 ++
.../selftests/kvm/arm64/vgic_lpi_stress.c | 3 ++
7 files changed, 45 insertions(+), 12 deletions(-)


base-commit: fd73f4a6659897191fa0d40695fe370925dd3780
--
2.39.5