Re: [PATCH v10 3/3] x86/cpu: Do a sanity check on required feature bits

From: Maciej Wieczor-Retman

Date: Wed Mar 18 2026 - 06:11:01 EST


On 2026-03-17 at 13:43:54 -0700, Sohil Mehta wrote:
>On 3/17/2026 1:00 PM, Maciej Wieczor-Retman wrote:
>> From: Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx>
>>
>> After CPU identification concludes, do a sanity check by comparing the
>> final x86_capability bitmask with the pre-defined required feature bits.
>>
>> Signed-off-by: Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx>
>> Acked-by: H. Peter Anvin (Intel) <hpa@xxxxxxxxx>
>> ---
>
>A minor concern below. Other than that,
>
>Reviewed-by: Sohil Mehta <sohil.mehta@xxxxxxxxx>

Thanks :)

>
>>
>> +/*
>> + * As a sanity check compare the final x86_capability bitmask with the initial
>> + * predefined required feature bits.
>> + */
>> +static void verify_required_features(const struct cpuinfo_x86 *c)
>> +{
>> + u32 missing[NCAPINTS] = REQUIRED_MASK_INIT;
>> + char cap_buf[X86_CAP_BUF_SIZE];
>> + unsigned int i;
>> + u32 error = 0;
>> +
>> + for (i = 0; i < NCAPINTS; i++) {
>> + missing[i] &= ~c->x86_capability[i];
>> + error |= missing[i];
>> + }
>> +
>> + if (!error)
>> + return;
>> +
>> + /* At least one required feature is missing */
>> + pr_warn("CPU %d: missing required feature(s):", c->cpu_index);
>> + for_each_set_bit(i, (unsigned long *)missing, NCAPINTS * 32)
>> + pr_cont(" %s", x86_cap_name(i, cap_buf));
>> + pr_cont("\n");
>
>Could multiple APs run into this concurrently? I am wondering if there
>is some risk of garbled output because of the pr_warn()/pr_cont()
>combination.

Just tested it on 224 CPU Xeon, basically I cleared a bunch of required features
from the x86_capability[] on all but the boot cpu. The warning output was serial
and no race conditions or mangled strings were observed.

Not sure if it can go wrong in any other way.

>Though, I don't have an easy fix if it is an issue.
>

--
Kind regards
Maciej Wieczór-Retman