diff options
author | Avi Kivity <avi@redhat.com> | 2009-03-23 17:51:38 -0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-05-02 10:57:14 -0700 |
commit | 7b6d4c8c3d17f59572d254784a770e058dc9d31e (patch) | |
tree | b0715f3c53fc2822ea13a6bc4d020d150abd4a11 | |
parent | 4de8a03e9dd90058db4ccde1ba3b8bf589bff9b3 (diff) |
KVM: VMX: Flush volatile msrs before emulating rdmsr
(cherry picked from 516a1a7e9dc80358030fe01aabb3bedf882db9e2)
Some msrs (notable MSR_KERNEL_GS_BASE) are held in the processor registers
and need to be flushed to the vcpu struture before they can be read.
This fixes cygwin longjmp() failure on Windows x64.
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | arch/x86/kvm/vmx.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index ff5b1c29cc5f..b61f914f9d35 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -897,6 +897,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata) data = vmcs_readl(GUEST_SYSENTER_ESP); break; default: + vmx_load_host_state(to_vmx(vcpu)); msr = find_msr_entry(to_vmx(vcpu), msr_index); if (msr) { data = msr->data; |