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

Re: [PATCH for-4.19] tools/xen-cpuid: switch to use cpu-policy defined names


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 30 Apr 2024 14:06:38 +0200
  • Autocrypt: addr=jbeulich@xxxxxxxx; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony@xxxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx, Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
  • Delivery-date: Tue, 30 Apr 2024 12:06:48 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 30.04.2024 13:25, Roger Pau Monné wrote:
> On Tue, Apr 30, 2024 at 12:37:44PM +0200, Jan Beulich wrote:
>> On 30.04.2024 10:29, Roger Pau Monne wrote:
>>>  static const struct {
>>>      const char *name;
>>>      const char *abbr;
>>> -    const char *const *strs;
>>
>> While how you're doing it looks all technically correct (so even without
>> changes I may later ack this as is), I'm still a little puzzled. I was
>> kind of expecting xen-cpuid.py to be extended to supply another (set
>> of) #define(s) more suitable for use here. In particular, while
>> performance surely isn't of much concern in this tool, ...
>>
>>> @@ -301,21 +52,32 @@ static const char *const fs_names[] = {
>>>      [XEN_SYSCTL_cpu_featureset_hvm_max] = "HVM Max",
>>>  };
>>>  
>>> -static void dump_leaf(uint32_t leaf, const char *const *strs)
>>> +static const char *find_name(unsigned int index)
>>>  {
>>> -    unsigned i;
>>> +    static const struct feature_name {
>>> +        const char *name;
>>> +        unsigned int bit;
>>> +    } feature_names[] = INIT_FEATURE_NAMES;
>>> +    unsigned int i;
>>>  
>>> -    if ( !strs )
>>> -    {
>>> -        printf(" ???");
>>> -        return;
>>> -    }
>>> +    for ( i = 0; i < ARRAY_SIZE(feature_names); i++ )
>>> +        if ( feature_names[i].bit == index )
>>> +            return feature_names[i].name;
>>
>> ... a linear search, repeated perhaps hundreds of times, looks still a
>> little odd to me.
> 
> I didn't benchmark what kind of performance impact this change would
> have on the tool, but I didn't think it was that relevant, as this is
> a diagnostic/debug tool, and hence performance (unless it took seconds
> to execute) shouldn't be that important.

As indicated, performance itself isn't much of a concern here. My earlier
question wants reading in relation to the other question raised, regarding
the script maybe wanting to produce macro(s) more suitable for the purpose
here.

> I could switch to a non-const array and sort it at the start in order
> to do a binary search, but that might be over engineering it.

Switching to non-const would in particular not seem overly desirable to
me.

>>> @@ -326,6 +88,7 @@ static void decode_featureset(const uint32_t *features,
>>>                                const char *name,
>>>                                bool detail)
>>>  {
>>> +    static const uint32_t known_features[] = INIT_KNOWN_FEATURES;
>>>      unsigned int i;
>>
>> So this variable exists solely to ...
>>
>>> @@ -336,11 +99,14 @@ static void decode_featureset(const uint32_t *features,
>>>      if ( !detail )
>>>          return;
>>>  
>>> -    for ( i = 0; i < length && i < ARRAY_SIZE(decodes); ++i )
>>> +    /* Ensure leaf names stay in sync with the policy leaf count. */
>>> +    BUILD_BUG_ON(ARRAY_SIZE(known_features) != ARRAY_SIZE(leaf_names));
>>
>> ... calculate its size here. Thus relying on the compiler to not flag
>> such effectively unused static const variables.
> 
> I wondered whether to add the unused attribute, but seeing as gitlab
> didn't complain I've forgot to add it.  I could add it.

Actually I was rather trying to hint at omitting the variable altogether,
like this:

   BUILD_BUG_ON(ARRAY_SIZE((unsigned[])INIT_KNOWN_FEATURES) != 
ARRAY_SIZE(leaf_names));

Yet I realize the look of it may not be liked, so adding the unused
attribute (if a suitable abstraction exists in the tool stack) would
probably be fine, too.

Jan



 


Rackspace

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