On 26/10/18 12:59, Jan Beulich wrote:
>>>> On 26.10.18 at 13:29, <andrew.coop...@citrix.com> wrote:
>> On 26/10/18 10:03, Jan Beulich wrote:
>>>>>> On 25.10.18 at 20:32, <andrew.coop...@citrix.com> wrote:
>>>> On 18/09/18 12:53, Jan Beulich wrote:
>>>>> @@ -1187,6 +1188,11 @@ static int _get_fpu(
>>>>>              return X86EMUL_UNHANDLEABLE;
>>>>>          break;
>>>>>  
>>>>> +    case X86EMUL_FPU_opmask:
>>>>> +        if ( !(xcr0 & X86_XCR0_SSE) || !(xcr0 & X86_XCR0_OPMASK) )
>>>>> +            return X86EMUL_UNHANDLEABLE;
>>>>> +        break;
>>>> I see this follows the pattern from X86EMUL_FPU_ymm, but by the SSE
>>>> check?  It is not relevant at this point - if xcr0.opmask is set, the
>>>> opmask instructions should be usable.
>>> I would agree with you from a functional POV, but please see the
>>> last row of the table named "OS XSAVE Enabling Requirements of
>>> Instruction Categories" in SDM Vol 2.
>> Hmm.  That table is in contradiction to Vol 3 Figure 2-8 and associated
>> description, which enumerates the #GP conditions of XSETBV.
>>
>> In particular, it suggests that OPMASK must be set in union with the ZMM
>> bits, and cannot be set without YMM.
> Hmm, true. However ...
>
>> IMO, we can require/expect get_xcr0() to pass an architecturally valid
>> result.  I don't think we should be checking the transitive closure of
>> feature dependences here.
> ... I'd prefer if the code remained consistent, and hence the
> analogy with X86EMUL_FPU_ymm should remain, the more that
> this way it's also more consistent with Vol 2's #UD condition table.
>
> Furthermore I consider some of the restrictions in table 2-8 quite
> a bit too restrictive, and hence I wouldn't be surprised if they
> got relaxed at some point. It has puzzled me from the very
> beginning that e.g. Hi16_ZMM needs to be set by 32-bit OSes
> despite there being no means to access the upper 16 ZMM
> registers.

It almost certainly simplifies the circuitry.  The high parts will be 0
(due to the zero extending property of VEX/EVEX) and unallocated in the
physical register file.

>  By keeping the code as is we'd have no issue with
> any such relaxation.

Right.  For now, lets leave this consistent with the surrounding code. 
Acked-by: Andrew Cooper <andrew.coop...@citrix.com>

I think we need need Intel to fix their docs, and based on that, I think
we should do some uniform changes to handling to remove unnecessary
dependency links.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to