From: Avi Kivity Date: Mon, 23 Mar 2009 20:51:38 +0000 (-0300) Subject: KVM: VMX: Flush volatile msrs before emulating rdmsr X-Git-Tag: v2.6.28.10~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b6d4c8c3d17f59572d254784a770e058dc9d31e;p=thirdparty%2Fkernel%2Fstable.git 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 Signed-off-by: Greg Kroah-Hartman --- diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index ff5b1c29cc5f6..b61f914f9d35d 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;