]> git.baikalelectronics.ru Git - kernel.git/commit
kvm: x86: Add fast CR3 switch code path
authorJunaid Shahid <junaids@google.com>
Wed, 27 Jun 2018 21:59:06 +0000 (14:59 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 6 Aug 2018 15:58:51 +0000 (17:58 +0200)
commit8b8f2ab67e04cf8fbc8bf572b90986a71b66a4cc
tree8853310526d28d88ed66aace7e035f3a09791bc0
parenta318c5413f70999478ae53bf5815a1deaad477b8
kvm: x86: Add fast CR3 switch code path

When using shadow paging, a CR3 switch in the guest results in a VM Exit.
In the common case, that VM exit doesn't require much processing by KVM.
However, it does acquire the MMU lock, which can start showing signs of
contention under some workloads even on a 2 VCPU VM when the guest is
using KPTI. Therefore, we add a fast path that avoids acquiring the MMU
lock in the most common cases e.g. when switching back and forth between
the kernel and user mode CR3s used by KPTI with no guest page table
changes in between.

For now, this fast path is implemented only for 64-bit guests and hosts
to avoid the handling of PDPTEs, but it can be extended later to 32-bit
guests and/or hosts as well.

Signed-off-by: Junaid Shahid <junaids@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/mmu.c
arch/x86/kvm/x86.c