|
@@ -7702,9 +7702,11 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
|
|
|
|
|
|
int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
|
|
|
{
|
|
|
- struct fxregs_state *fxsave =
|
|
|
- &vcpu->arch.guest_fpu.state.fxsave;
|
|
|
+ struct fxregs_state *fxsave;
|
|
|
|
|
|
+ vcpu_load(vcpu);
|
|
|
+
|
|
|
+ fxsave = &vcpu->arch.guest_fpu.state.fxsave;
|
|
|
memcpy(fpu->fpr, fxsave->st_space, 128);
|
|
|
fpu->fcw = fxsave->cwd;
|
|
|
fpu->fsw = fxsave->swd;
|
|
@@ -7714,6 +7716,7 @@ int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
|
|
|
fpu->last_dp = fxsave->rdp;
|
|
|
memcpy(fpu->xmm, fxsave->xmm_space, sizeof fxsave->xmm_space);
|
|
|
|
|
|
+ vcpu_put(vcpu);
|
|
|
return 0;
|
|
|
}
|
|
|
|