Re: [PATCH v2 0/4] KVM: arm64: vgic-its: Make the ITS table save reliable
Marc Zyngier <[email protected]>
| Newsgroups | dev.linux.lists.kvmarm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 21 Aug 2026 07:44:41 +0100, Fuad Tabba <[email protected]> wrote: > > Hi folks, > > Changes since v1 [1]: > - Free the LPI translation cache in vgic_mmio_write_its_baser() too, > inside the its_lock section. (Eric) > - Reworded patch 1 to name the register the write is to. (Eric) > - Rebased onto kvmarm/next. > > Marc pointed out on the v2 ITS series [2] that patch 3 fixed the wrong > end of the problem: KVM should drop the collections when the guest > changes the table that described them, rather than validating them at > save time. He also called that patch's -EINVAL a mistake, since it > aborts a save userspace has to be able to issue. This series does both, > following his answers [3] to the two open questions: purge the whole > list, and skip the offending device rather than fail. > > vgic_mmio_write_its_baser() now frees the cached devices or collections > whenever the stored register value changes, not only when VALID is > cleared, and drops the translation cache with them. It tests for a > change rather than a write because the ITS driver rewrites an unchanged > GITS_BASER<n> on resume. With that in place the check patch 3 added is > unreachable, so it is reverted, and vgic_its_save_device_tables() skips > a device the table can no longer address instead of failing the save. > > compute_next_devid_offset() now calls vgic_its_check_id(), which reads > guest memory for an indirect table, so the save does 2n reads rather > than n. It stays linear, as the scan stops at the first > reachable successor. Patch 1's Fixes: tag names a v4.15 commit, so it > will be picked up for stable. Drop the tag if that is not wanted. > > Patches 1 and 3 apply to v7.2 unchanged, but patch 2 reverts a commit > only in kvmarm/next, so the series is based there. > > Tested on QEMU: the new selftest, vgic_irq, vgic_lpi_stress and boots. > Both cases of the new selftest reset and restore the tables they saved, > and both fail without the series. > > Based on kvmarm/next (aa8e5dc6a7a2a). Reviewed-by: Marc Zyngier <[email protected]> M. -- Without deviation from the norm, progress is not possible.