diff options
| author | Oliver Upton <[email protected]> | 2024-10-07 23:30:27 +0000 |
|---|---|---|
| committer | Marc Zyngier <[email protected]> | 2024-10-08 09:40:27 +0000 |
| commit | c268f204f7c5784e84583c1c44d427bac09f517a (patch) | |
| tree | 10b75651a487bf8ad69cb263cc1b47c0515b22cc /rust/helpers/helpers.c | |
| parent | KVM: arm64: nv: Do not block when unmapping stage-2 if disallowed (diff) | |
| download | kernel-c268f204f7c5784e84583c1c44d427bac09f517a.tar.gz kernel-c268f204f7c5784e84583c1c44d427bac09f517a.zip | |
KVM: arm64: nv: Punt stage-2 recycling to a vCPU request
Currently, when a nested MMU is repurposed for some other MMU context,
KVM unmaps everything during vcpu_load() while holding the MMU lock for
write. This is quite a performance bottleneck for large nested VMs, as
all vCPU scheduling will spin until the unmap completes.
Start punting the MMU cleanup to a vCPU request, where it is then
possible to periodically release the MMU lock and CPU in the presence of
contention.
Ensure that no vCPU winds up using a stale MMU by tracking the pending
unmap on the S2 MMU itself and requesting an unmap on every vCPU that
finds it.
Signed-off-by: Oliver Upton <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Marc Zyngier <[email protected]>
Diffstat (limited to 'rust/helpers/helpers.c')
0 files changed, 0 insertions, 0 deletions
