A failed REDIST_REGION update can unregister redistributor iodevs belonging to earlier regions without clearing their cached base addresses. A corrected retry then succeeds without restoring the missing iodevs.
Limit rollback to vCPUs assigned to the newly added region. Extend vgic_init to access an earlier redistributor after a failed update and retry. Commits 8542a8f95a67, 59112e9c390b, and 0d92e4a7ffd5 progressively fixed cleanup after a failed region update. Preserving earlier regions follows that model. Built with GCC 15.2.0 and tested under QEMU 10.2.1 TCG with -machine virt,virtualization=on,gic-version=3 and -cpu max. Both runs reached the VGICv3 tests. The patched kernel passed; the same selftest against the unpatched base failed with: Unexpected MMIO exit at 0x8050008 Karl Mehltretter (2): KVM: arm64: vgic-v3: Roll back failed redistributor region setup KVM: arm64: selftests: Test VGICv3 redistributor region retry arch/arm64/kvm/vgic/vgic-mmio-v3.c | 42 ++++--- tools/testing/selftests/kvm/arm64/vgic_init.c | 115 +++++++++++++----- 2 files changed, 112 insertions(+), 45 deletions(-) base-commit: b9b3e33b70b71e516930117e21de3ad2a7723747 -- 2.53.0

