summaryrefslogtreecommitdiffstats
path: root/arch/arm64/kvm/sys_regs.c
diff options
context:
space:
mode:
authorOliver Upton <oliver.upton@linux.dev>2024-10-08 01:30:27 +0200
committerMarc Zyngier <maz@kernel.org>2024-10-08 11:40:27 +0200
commitc268f204f7c5784e84583c1c44d427bac09f517a (patch)
tree10b75651a487bf8ad69cb263cc1b47c0515b22cc /arch/arm64/kvm/sys_regs.c
parentKVM: arm64: nv: Do not block when unmapping stage-2 if disallowed (diff)
downloadlinux-c268f204f7c5784e84583c1c44d427bac09f517a.tar.xz
linux-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 <oliver.upton@linux.dev> Link: https://lore.kernel.org/r/20241007233028.2236133-4-oliver.upton@linux.dev Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions