Re: [PATCH v3 0/5] KVM: arm64: fix VGICv3 redistributor rollback

From: Fuad Tabba

Date: Sun Aug 23 2026 - 11:40:21 EST


Hi Karl,

On Sat, 22 Aug 2026 at 10:53, Karl Mehltretter <kmehltretter@xxxxxxxxx> 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@xxxxxxxxx>
Tested-by: Fuad Tabba <fuad.tabba@xxxxxxxxx>

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@xxxxxxxxx
>
> 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)