2017-05-10 23:35 GMT+08:00 Paolo Bonzini <pbonzini@xxxxxxxxxx>: > > > On 10/05/2017 12:19, Wanpeng Li wrote: >> * with old userspace. >> */ >> - if (xstate_bv & ~kvm_supported_xcr0()) >> + if (xstate_bv & ~kvm_supported_xcr0() || >> + mxcsr & ~vcpu->arch.guest_fpu.state.xsave.i387.mxcsr_mask) >> return -EINVAL; >> load_xsave(vcpu, (u8 *)guest_xsave->region); >> } else { >> - if (xstate_bv & ~XFEATURE_MASK_FPSSE) >> + if (xstate_bv & ~XFEATURE_MASK_FPSSE || >> + mxcsr & ~vcpu->arch.guest_fpu.state.fxsave.mxcsr_mask) >> return -EINVAL; >> memcpy(&vcpu->arch.guest_fpu.state.fxsave, >> guest_xsave->region, sizeof(struct fxregs_state)); > > Hmm, thinking more about it, maybe use mxcsr_feature_mask instead of > digging into vcpu->arch.guest_fpu? If you send v2, please remember to ERROR: "mxcsr_feature_mask" [arch/x86/kvm/kvm.ko] undefined. So we should dig into vcpu->arch.guest_fpu. Regards, Wanpeng Li