Re: [PATCH v3 0/5] KVM: arm64: fix VGICv3 redistributor rollback
From: Fuad Tabba <fuad.tabba@linux.dev>
Date: 2026-08-23 15:39:50
Also in:
kvm, kvmarm, linux-kselftest, lkml
Hi Karl, On Sat, 22 Aug 2026 at 10:53, Karl Mehltretter [off-list ref] wrote: ...
Testing: built the patched kernel and the arm64 vgic_init selftest with GCC 13.3.0 in an arm64 Linux container. The selftest passed under QEMU 11.0.2 TCG with -machine virt,virtualization=on,gic-version=3 and -cpu max.
Applied this on kvmarm/next: protected and non-protected guest boots under pKVM, plus VHE and nVHE, and the vgic_init, vgic_irq and vgic_lpi_stress selftest. Also built the base with only patches 4-5 and confirmed the new test fails without patches 1-3. Reviewed-by: Fuad Tabba <fuad.tabba@linux.dev> Tested-by: Fuad Tabba <fuad.tabba@linux.dev> Cheers, /fuad
--- Changes since v2: - Patch 1: limit free_index rollback to the immediate registration failure under slots_lock instead of generic unregistration. (Sashiko) - Patch 2: reset all assignments and region counters after a failed region update (Marc), and serialize REDIST and REDIST_REGION writes with vCPU creation so rollback cannot miss an unpublished assignment. - Patch 3: add an already-locked unassignment primitive, move failed-vCPU cleanup to kvm_vgic_vcpu_destroy(), and remove the redundant base_addr reset. (Marc) - Patch 4: match vm_create_with_vcpus() by using void * for the guest-code argument. (Sashiko) - Patch 5: document how the first three redistributors span regions 0 and 1; no functional change. Previous version: v2: https://lore.kernel.org/r/20260819224229.82948-1-kmehltretter@gmail.com (local) Karl Mehltretter (5): KVM: arm64: vgic-v3: Undo assignment on iodev registration failure KVM: arm64: vgic-v3: Reset redistributors after failed region setup KVM: arm64: vgic-v3: Separate redistributor teardown from unassignment KVM: arm64: selftests: Pass guest code to vm_gic_create_with_vcpus() KVM: arm64: selftests: Test VGICv3 redistributor region retry arch/arm64/kvm/vgic/vgic-init.c | 46 +++---- arch/arm64/kvm/vgic/vgic-kvm-device.c | 20 +++ arch/arm64/kvm/vgic/vgic-mmio-v3.c | 83 ++++++++----- arch/arm64/kvm/vgic/vgic.h | 1 + tools/testing/selftests/kvm/arm64/vgic_init.c | 116 ++++++++++++++++-- 5 files changed, 200 insertions(+), 66 deletions(-) base-commit: 57e7cf13ac26bf1a3dba6cfa601f7b2481811575 -- 2.39.5 (Apple Git-154)