From: Avi Kivity <[email protected]>

Switching is controlled by is_long_mode(), so we must unload guest MSRs while
switching to or from long mode.

Signed-off-by: Avi Kivity <[email protected]>

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index b923f2a..3291ea5 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1538,6 +1538,11 @@ static void vmx_set_efer(struct kvm_vcpu *vcpu, u64 efer)
 
        if (!msr)
                return;
+       /*
+        * Force kernel_gs_base reloading before EFER changes, as control
+        * of this msr depends on is_long_mode().
+        */
+       vmx_load_host_state(to_vmx(vcpu));
        vcpu->arch.shadow_efer = efer;
        if (!msr)
                return;
--
To unsubscribe from this list: send the line "unsubscribe kvm-commits" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to