diff options
author | Oliver Upton <oliver.upton@linux.dev> | 2022-11-07 21:58:55 +0000 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2022-11-10 14:43:46 +0000 |
commit | 0ab12f3574db6cb432917a667f9392a88e8f0dfc (patch) | |
tree | c73db825b8c574644e1ddb54bdb2a21b689628e8 /tools/perf/util/scripting-engines/trace-event-python.c | |
parent | 331aa3a0547d1c794587e0df374d13b16645e832 (diff) | |
download | linux-0ab12f3574db6cb432917a667f9392a88e8f0dfc.tar.gz linux-0ab12f3574db6cb432917a667f9392a88e8f0dfc.tar.bz2 linux-0ab12f3574db6cb432917a667f9392a88e8f0dfc.zip |
KVM: arm64: Make block->table PTE changes parallel-aware
In order to service stage-2 faults in parallel, stage-2 table walkers
must take exclusive ownership of the PTE being worked on. An additional
requirement of the architecture is that software must perform a
'break-before-make' operation when changing the block size used for
mapping memory.
Roll these two concepts together into helpers for performing a
'break-before-make' sequence. Use a special PTE value to indicate a PTE
has been locked by a software walker. Additionally, use an atomic
compare-exchange to 'break' the PTE when the stage-2 page tables are
possibly shared with another software walker. Elide the DSB + TLBI if
the evicted PTE was invalid (and thus not subject to break-before-make).
All of the atomics do nothing for now, as the stage-2 walker isn't fully
ready to perform parallel walks.
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221107215855.1895367-1-oliver.upton@linux.dev
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-python.c')
0 files changed, 0 insertions, 0 deletions