diff options
author | Gleb Natapov <gleb@redhat.com> | 2013-09-02 15:25:28 +0300 |
---|---|---|
committer | Gleb Natapov <gleb@redhat.com> | 2013-09-17 12:52:42 +0300 |
commit | 72f857950f6f19cba42a9ded078bbc99f10aa667 (patch) | |
tree | ec4d4c166367db8eeb7e3deb6d203f291b10cf18 /arch | |
parent | ba6a3541545542721ce821d1e7e5ce35752e6fdf (diff) | |
download | op-kernel-dev-72f857950f6f19cba42a9ded078bbc99f10aa667.zip op-kernel-dev-72f857950f6f19cba42a9ded078bbc99f10aa667.tar.gz |
KVM: nEPT: reset PDPTR register cache on nested vmentry emulation
After nested vmentry stale cache can be used to reload L2 PDPTR pointers
which will cause L2 guest to fail. Fix it by invalidating cache on nested
vmentry emulation.
https://bugzilla.kernel.org/show_bug.cgi?id=60830
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kvm/vmx.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 1f1da43..4873593 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -7766,6 +7766,10 @@ static void prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12) vmcs_write64(GUEST_PDPTR1, vmcs12->guest_pdptr1); vmcs_write64(GUEST_PDPTR2, vmcs12->guest_pdptr2); vmcs_write64(GUEST_PDPTR3, vmcs12->guest_pdptr3); + __clear_bit(VCPU_EXREG_PDPTR, + (unsigned long *)&vcpu->arch.regs_avail); + __clear_bit(VCPU_EXREG_PDPTR, + (unsigned long *)&vcpu->arch.regs_dirty); } kvm_register_write(vcpu, VCPU_REGS_RSP, vmcs12->guest_rsp); |