Re: [PATCH v2] x86: Clear feature bits disabled at compile-time
From: H. Peter Anvin
Date: Wed Jul 23 2025 - 13:24:08 EST
On July 23, 2025 10:13:52 AM PDT, Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx> wrote:
>On 2025-07-23 at 08:28:32 -0700, H. Peter Anvin wrote:
>>On July 23, 2025 8:13:07 AM PDT, Maciej Wieczor-Retman <maciej.wieczor-retman@xxxxxxxxx> wrote:
>>>On 2025-07-23 at 15:46:40 +0200, Borislav Petkov wrote:
>>>>On Wed, Jul 23, 2025 at 11:22:49AM +0200, Maciej Wieczor-Retman wrote:
>>>>> +static __init void init_cpu_cap(struct cpuinfo_x86 *c)
>>>>> +{
>>>>> + int i;
>>>>> +
>>>>> + for (i = 0; i < NCAPINTS; i++) {
>>>>> + cpu_caps_set[i] = REQUIRED_MASK(i);
>>>>> + cpu_caps_cleared[i] = DISABLED_MASK(i);
>>>>> + }
>>>>> +}
>>>>
>>>>There's already apply_forced_caps(). Not another cap massaging function
>>>>please. Add that stuff there.
>>>
>>>I'll try that, but can't it overwrite some things? apply_forced_caps() is called
>>>three times and cpu_caps_set/cleared are modified in between from what I can
>>>see. init_cpu_cap() was supposed to only initialize these arrays.
>>>
>>What are you concerned it would overwrite? I'm confused.
>
>I thought that cpu_caps_set/cleared could change in-between apply_forced_caps()
>calls. Therefore if we also applied the DISABLED_MASK() in every
>apply_forced_caps() call I thought it might clear some flag that other function
>might set.
>
>But I've been looking at these calls for a while now and that doesn't seem
>possible. Changes are made only if features are compiled, so it doesn't
>interfere with the DISABLED_MASK().
>
>Sorry for the confusion.
>
Any changes would be additive, or we would be in a world of hurt anyway.