diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2010-07-27 18:14:20 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-10-24 10:50:03 +0200 |
commit | 3f6a9d1693deaeef28d98109bc92c98dd94a8523 (patch) | |
tree | e7dbbef3b591eb7edc502ae7af68403b4bd13063 /arch/x86/kvm/svm.c | |
parent | 19ada5c4b6170bbc7ac4f2f38dba0068fdc7755a (diff) | |
download | blackbird-op-linux-3f6a9d1693deaeef28d98109bc92c98dd94a8523.tar.gz blackbird-op-linux-3f6a9d1693deaeef28d98109bc92c98dd94a8523.zip |
KVM: SVM: Sync efer back into nested vmcb
This patch fixes a bug in a nested hypervisor that heavily
switches between real-mode and long-mode. The problem is
fixed by syncing back efer into the guest vmcb on emulated
vmexit.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r-- | arch/x86/kvm/svm.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 8a3f9f64f86f..09704a0501d7 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1896,6 +1896,7 @@ static int nested_svm_vmexit(struct vcpu_svm *svm) nested_vmcb->save.ds = vmcb->save.ds; nested_vmcb->save.gdtr = vmcb->save.gdtr; nested_vmcb->save.idtr = vmcb->save.idtr; + nested_vmcb->save.efer = svm->vcpu.arch.efer; nested_vmcb->save.cr0 = kvm_read_cr0(&svm->vcpu); nested_vmcb->save.cr3 = svm->vcpu.arch.cr3; nested_vmcb->save.cr2 = vmcb->save.cr2; |