]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
KVM: VMX: Flush volatile msrs before emulating rdmsr
authorAvi Kivity <avi@redhat.com>
Mon, 23 Mar 2009 20:51:38 +0000 (17:51 -0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 2 May 2009 17:57:14 +0000 (10:57 -0700)
(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>
arch/x86/kvm/vmx.c

index ff5b1c29cc5f68c77ca6d16e03cd859dc709f5e3..b61f914f9d35df814c1a13f20627873b1705afd9 100644 (file)
@@ -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;