[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] x86emul: honor guest CR4.OSFXSR, CR4.OSXSAVE, and CR0.PE/EFLAGS.VM
On 04/10/16 14:39, Jan Beulich wrote: > @@ -770,9 +773,23 @@ static int _get_fpu( > unsigned long cr0; > > fail_if(!ops->read_cr); > + if ( type >= X86EMUL_FPU_xmm ) > + { > + unsigned long cr4; > + > + rc = ops->read_cr(4, &cr4, ctxt); > + if ( rc != X86EMUL_OKAY ) > + return rc; > + generate_exception_if(!(cr4 & ((type == X86EMUL_FPU_xmm) > + ? CR4_OSFXSR : CR4_OSXSAVE)), > + EXC_UD, -1); > + } > + > rc = ops->read_cr(0, &cr0, ctxt); > if ( rc != X86EMUL_OKAY ) > return rc; > + if ( !(cr0 & CR0_PE) || (ctxt->regs->eflags & EFLG_VM) ) > + generate_exception_if(type >= X86EMUL_FPU_ymm, EXC_UD, -1); Is this an appropriate check to do here? This restriction is because the VEX prefix isn't permitted in real/vm86 mode. Instead of a generate_exception_if(), I would instead have an ASSERT() that we don't actually reach this point. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |