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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.