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@intel.com 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.