|
[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
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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |