]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit - include/linux/kvm_host.h
KVM: MMU: Don't use RCU for lockless shadow walking
authorAvi Kivity <avi@redhat.com>
Mon, 14 May 2012 12:44:06 +0000 (15:44 +0300)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 16 May 2012 19:08:28 +0000 (16:08 -0300)
commitc142786c6291189b5c85f53d91743e1eefbd8fe0
tree80e5e37a29ae247d6223672126a10c15751f4dc7
parentb2da15ac26a0c00fc0d399a2bc5cf3c4e15f0b4f
KVM: MMU: Don't use RCU for lockless shadow walking

Using RCU for lockless shadow walking can increase the amount of memory
in use by the system, since RCU grace periods are unpredictable.  We also
have an unconditional write to a shared variable (reader_counter), which
isn't good for scaling.

Replace that with a scheme similar to x86's get_user_pages_fast(): disable
interrupts during lockless shadow walk to force the freer
(kvm_mmu_commit_zap_page()) to wait for the TLB flush IPI to find the
processor with interrupts enabled.

We also add a new vcpu->mode, READING_SHADOW_PAGE_TABLES, to prevent
kvm_flush_remote_tlbs() from avoiding the IPI.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/mmu.c
include/linux/kvm_host.h