[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4] x86/cpuid: AVX-512 Feature Detection



>>> On 10.08.16 at 14:10, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 10/08/16 11:29, Jan Beulich wrote:
>>>>> On 10.08.16 at 11:58, <luwei.kang@xxxxxxxxx> wrote:
>>>>>>> On 03.08.16 at 03:32, <luwei.kang@xxxxxxxxx> wrote:
>>>>>>  On 25/07/16 07:09, Kang, Luwei wrote:
>>>>>>>>>> First of all - please don't top post.
>>>>>>>>>>
>>>>>>>>>>> What about remove the dependency between AVX2 and AVX512F
>>>>>>>> ( AVX2:
>>>>>>>>>> [AVX512F], ) ?
>>>>>>>>>>
>>>>>>>>>> Yes, that's what I think we want, but we need Andrew's agreement 
>>>>>>>>>> here.
>>>>>>>>>>
>>>>>>>>> Hi Andrew,  what is your opinion ?
>>>>>>>> You are in a better position to answer than me.
>>>>>>>>
>>>>>>>> For a specific instruction which may be VEX and EVEX encoded, is
>>>>>>>> the circuitry for a specific instruction shared, or discrete?  Is
>>>>>>>> there a plausible future where you might support only the EVEX
>>>>>>>> variant of an instruction, and not the VEX variant?
>>>>>>>>
>>>>>>>> These dependences are about what may be reasonably assumed about
>>>>>>>> the way the environment is structured.  It doesn't look reasonable
>>>>>>>> to advertise an AVX512 environment to guests while at the same
>>>>>>>> time stating that AVX2 is not present.  If this is correct, then
>>>>>>>> the dependency
>>>>> should stay.
>>>>>>>> If Intel plausibly things it might release hardware with !AVX2 but
>>>>>>>> AVX512, then the dependency should be dropped.
>>>>>>> Regarding the dependency between AVX2 and AVX512F, I have ask some
>>>>>>> hardware
>>>>> architecture engineer.
>>>>>>> AVX512 is a superset of AVX2, the most important item being the
>>>>>>> state. If
>>>>> the state for AVX2 isn't enabled (in XCR0), then AVX512
>>>>>> also can't function.
>>>>>>> So if we want to use AVX512, AVX2 must be supported and enabled.
>>>>>>> The
>>>>> dependence between AVX512F and AVX2 may need be
>>>>>> reserved.
>>>>>>
>>>>>> Ok, so AVX512 strictly depends on AVX2.
>>>>>>
>>>>>> In which case, the python code was correct.  The meaning of the
>>>>>> key/value
>>>>> relationship is "if the feature in the key is not present, all
>>>>>> features in the value must also be disabled".
>>>>> Hi jan, what is your opinion?
>>>> There's no opinion to be had here, according to your earlier reply. I do, 
>>> however, continue to question that model: State and
>>>> instruction set are independent items. Of course YMM state is a prereq to 
>>> ZMM state, but I do not buy AVX2 insn support being a
>>>> prereq to AVX-512 insns. Yet to me the AVX2 and AVX-512F feature flags 
>>>> solely 
>>> represent the instructions, while the XSTATE leaf bits
>>>> represent the states.
>>>>
>>> Hi jan,
>>>     I get some information from hardware colleague.  There is no dependence 
>>> about AVX512 instructions and AVX2 instructions. It is also not states in 
> the 
>>> official document.
>> As I had assumed.
>>
>>>    But I want to know the meaning of the dependence "AVX2: [AVX512F]"  in 
>>> "gen-cpuid.py" file. 
>>>    If it is the feature dependence, I think the dependence between AVX512 
>>> and AVX2  may need to add. As we talk before, Zmm is part of AVX512 
>>> feature. 
> 
>>> If the state for AVX2 isn't enabled (in XCR0), then AVX512 also can't 
>>> function. Apart from that, there is no processors with AVX512  without AVX2 
>>> currently and it is safe to treat AVX2 as part of the thermometer leading 
>>> to 
> 
>>> AVX512. Regarding if will have a cpu support avx512 without avx2 in future, 
>>> it is really hard to say.
>>>     If it is the instructions dependence, I have no idea to delete this 
>>> dependence in "gen-cpuid.py" file.
>>>     So, I want to know your advice.
>> Well, the main issue here is that we have no feature flag representation
>> for the xstate bits. If we had, the relevant parts of the dependencies
>> should look like
>>
>>      XSTATE_YMM: [AVX, XSTATE_ZMM]
>>      AVX: [AVX2]
>>      XSTATE_ZMM: [AVX512F]
>>      AVX512F: [AVX512CD, ...]
>>
>> But in their absence I guess keeping the AVX2 dependency as you have
>> it is the only reasonable approach. Just that I'd like it to be accompanied
>> by a comment explaining that this isn't the actual dependency (so that if
>> XSTATE feature flags got introduced later, it would be clear how to
>> adjust those parts).
>>
>> Andrew - I keep forgetting why you think having such XSTATE_* feature
>> flags is not appropriate.
> 
> This is all about providing a plausible cpuid layout to a guest.
> 
> It is not plausible that we will ever see a processor with e.g. AVX512F
> but not XSTATE_ZMM.

This is a somewhat bogus argument considering we have

        FXSR: [FFXSR, SSE],

which, as you certainly realize, is slightly wrong nowadays:
XSTATE_XMM would suffice as a prereq, without any FXSR. (But
I certainly realize that lack of FXSR is unlikely, as that's considered
part of the base x86-64 architecture, and I also realize that
expressing alternative prereqs would make the deep dependency
generation logic more complicated.)

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.