mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
KVM: fx_init() needs preemption disabled while it plays with the FPU state
Now that kvm generally runs with preemption enabled, we need to protect the fpu intialization sequence. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
parent
11ec280471
commit
9bd01506ee
@ -693,10 +693,13 @@ void fx_init(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
} *fx_image;
|
} *fx_image;
|
||||||
|
|
||||||
|
/* Initialize guest FPU by resetting ours and saving into guest's */
|
||||||
|
preempt_disable();
|
||||||
fx_save(vcpu->host_fx_image);
|
fx_save(vcpu->host_fx_image);
|
||||||
fpu_init();
|
fpu_init();
|
||||||
fx_save(vcpu->guest_fx_image);
|
fx_save(vcpu->guest_fx_image);
|
||||||
fx_restore(vcpu->host_fx_image);
|
fx_restore(vcpu->host_fx_image);
|
||||||
|
preempt_enable();
|
||||||
|
|
||||||
fx_image = (struct fx_image_s *)vcpu->guest_fx_image;
|
fx_image = (struct fx_image_s *)vcpu->guest_fx_image;
|
||||||
fx_image->mxcsr = 0x1f80;
|
fx_image->mxcsr = 0x1f80;
|
||||||
|
Loading…
Reference in New Issue
Block a user