diff options
Diffstat (limited to 'drivers/kvm/vmx.c')
-rw-r--r-- | drivers/kvm/vmx.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index 184238e2ece..c1ac106ace8 100644 --- a/drivers/kvm/vmx.c +++ b/drivers/kvm/vmx.c @@ -280,6 +280,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu) static void vmx_vcpu_put(struct kvm_vcpu *vcpu) { + kvm_put_guest_fpu(vcpu); put_cpu(); } @@ -1847,10 +1848,8 @@ again: if (vcpu->guest_debug.enabled) kvm_guest_debug_pre(vcpu); - if (vcpu->fpu_active) { - fx_save(vcpu->host_fx_image); - fx_restore(vcpu->guest_fx_image); - } + kvm_load_guest_fpu(vcpu); + /* * Loading guest fpu may have cleared host cr0.ts */ @@ -2012,11 +2011,6 @@ again: } #endif - if (vcpu->fpu_active) { - fx_save(vcpu->guest_fx_image); - fx_restore(vcpu->host_fx_image); - } - vcpu->interrupt_window_open = (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & 3) == 0; asm ("mov %0, %%ds; mov %0, %%es" : : "r"(__USER_DS)); |