|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 3/6] x86/cpu-policy: Infrastructure for MSR_ARCH_CAPS
On 19.05.2023 17:36, Andrew Cooper wrote:
> On 16/05/2023 1:02 pm, Jan Beulich wrote:
>> On 15.05.2023 16:42, Andrew Cooper wrote:
>>> Bits through 24 are already defined, meaning that we're not far off needing
>>> the second word. Put both in right away.
>>>
>>> The bool bitfield names in the arch_caps union are unused, and somewhat out
>>> of
>>> date. They'll shortly be automatically generated.
>>>
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>> I'm largely okay, but I'd like to raise a couple of naming / presentation
>> questions:
>>
>>> --- a/tools/misc/xen-cpuid.c
>>> +++ b/tools/misc/xen-cpuid.c
>>> @@ -226,6 +226,14 @@ static const char *const str_7d2[32] =
>>> [ 4] = "bhi-ctrl", [ 5] = "mcdt-no",
>>> };
>>>
>>> +static const char *const str_10Al[32] =
>>> +{
>>> +};
>>> +
>>> +static const char *const str_10Ah[32] =
>>> +{
>>> +};
>>> +
>>> static const struct {
>>> const char *name;
>>> const char *abbr;
>>> @@ -248,6 +256,8 @@ static const struct {
>>> { "0x00000007:2.edx", "7d2", str_7d2 },
>>> { "0x00000007:1.ecx", "7c1", str_7c1 },
>>> { "0x00000007:1.edx", "7d1", str_7d1 },
>>> + { "0x0000010a.lo", "10Al", str_10Al },
>>> + { "0x0000010a.hi", "10Ah", str_10Ah },
>> The MSR-ness can certainly be inferred from the .lo / .hi and l/h
>> suffixes of the strings, but I wonder whether having it e.g. like
>>
>> { "MSR0000010a.lo", "m10Al", str_10Al },
>> { "MSR0000010a.hi", "m10Ah", str_10Ah },
>>
>> or
>>
>> { "MSR[010a].lo", "m10Al", str_10Al },
>> { "MSR[010a].hi", "m10Ah", str_10Ah },
>>
>> or even
>>
>> { "ARCH_CAPS.lo", "m10Al", str_10Al },
>> { "ARCH_CAPS.hi", "m10Ah", str_10Ah },
>>
>> wouldn't make it more obvious.
>
> Well, it's takes something which is consistent, and introduces
> inconsistencies.
>
> The e is logically part of the leaf number, so using m for MSRs is not
> equivalent. If you do want to prefix MSRs, you need to prefix the
> non-extended leaves, and c isn't obviously CPUID when there's the
> Centaur range at 0xC000xxxx
>
> Nor can you reasonably have MSR[...] in the long names without
> CPUID[...] too, and that's taking some pretty long lines and making them
> even longer.
I disagree, simply because of the name of the tool we're talking about
here. It's all about CPUID, so calling that out isn't relevant. Calling
out parts which aren't CPUID is, imo.
>>> --- a/xen/include/public/arch-x86/cpufeatureset.h
>>> +++ b/xen/include/public/arch-x86/cpufeatureset.h
>>> @@ -307,6 +307,10 @@ XEN_CPUFEATURE(AVX_VNNI_INT8, 15*32+ 4) /*A
>>> AVX-VNNI-INT8 Instructions */
>>> XEN_CPUFEATURE(AVX_NE_CONVERT, 15*32+ 5) /*A AVX-NE-CONVERT
>>> Instructions */
>>> XEN_CPUFEATURE(CET_SSS, 15*32+18) /* CET Supervisor Shadow
>>> Stacks safe to use */
>>>
>>> +/* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */
>>> +
>>> +/* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.edx, word 17 */
>> Right here I'd be inclined to omit the MSR index; the name ought to
>> be sufficient.
>
> It doesn't hurt to have it, and it it might be helpful for people who
> don't know the indices off by heart.
I'm one of those who don't, yet I still view the number as odd here.
Imo it has no relevance in this context. But anyway, I'm going to
accept this part whichever way you want it, while I continue to be
unconvinced of the xen-cpuid side of things.
Roger, do you have any opinion here? If you and Andrew agreed, I'd
certainly accept that.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |