KVM: arm64: Atomically update stage 2 leaf attributes in parallel walks
authorOliver Upton <oliver.upton@linux.dev>
Mon, 7 Nov 2022 21:56:39 +0000 (21:56 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 10 Nov 2022 14:43:46 +0000 (14:43 +0000)
commitca5de2448c3b4c018fe3d6223df8b59068be1cd7
treea65155d363a6324551eeaa21bf33d78f2261bf9b
parentc3119ae45dfb6038ca458ab5ba7a9fba2810845b
KVM: arm64: Atomically update stage 2 leaf attributes in parallel walks

The stage2 attr walker is already used for parallel walks. Since commit
f783ef1c0e82 ("KVM: arm64: Add fast path to handle permission relaxation
during dirty logging"), KVM acquires the read lock when
write-unprotecting a PTE. However, the walker only uses a simple store
to update the PTE. This is safe as the only possible race is with
hardware updates to the access flag, which is benign.

However, a subsequent change to KVM will allow more changes to the stage
2 page tables to be done in parallel. Prepare the stage 2 attribute
walker by performing atomic updates to the PTE when walking in parallel.

Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221107215644.1895162-10-oliver.upton@linux.dev
arch/arm64/kvm/hyp/pgtable.c