diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-19 13:17:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-19 13:17:12 -0400 |
commit | b8a33fc7258f9e6e42b15571d0284b7c0ef0d0a9 (patch) | |
tree | d96631dd8fdfb1d50d59335c1e31479cdb35f7ee /arch/x86 | |
parent | b7356abb9fb952d385caef6d58d7e7aff17a478e (diff) | |
parent | 1c118b8226922d225a7df4127926ed2a2d73baaf (diff) |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull KVM fix from Paolo Bonzini:
"This single patch fixes a regression caused by one of the
optimizations introduced in 3.11, which is generally visible only on
AMD processors"
* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: MMU: avoid fast page fault fixing mmio page fault
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kvm/mmu.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 0d094da49541..9e9285ae9b94 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -2811,6 +2811,13 @@ exit: | |||
2811 | static bool page_fault_can_be_fast(struct kvm_vcpu *vcpu, u32 error_code) | 2811 | static bool page_fault_can_be_fast(struct kvm_vcpu *vcpu, u32 error_code) |
2812 | { | 2812 | { |
2813 | /* | 2813 | /* |
2814 | * Do not fix the mmio spte with invalid generation number which | ||
2815 | * need to be updated by slow page fault path. | ||
2816 | */ | ||
2817 | if (unlikely(error_code & PFERR_RSVD_MASK)) | ||
2818 | return false; | ||
2819 | |||
2820 | /* | ||
2814 | * #PF can be fast only if the shadow page table is present and it | 2821 | * #PF can be fast only if the shadow page table is present and it |
2815 | * is caused by write-protect, that means we just need change the | 2822 | * is caused by write-protect, that means we just need change the |
2816 | * W bit of the spte which can be done out of mmu-lock. | 2823 | * W bit of the spte which can be done out of mmu-lock. |