After alternatives have been patched, changes to the X86_FEATURE flags
won't take effect and could potentially even be wrong.
Warn about it.
This is something which has been long overdue.
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Srikanth Aithal <sraithal@amd.com>
Link: https://lore.kernel.org/r/20240327154317.29909-3-bp@alien8.de
 extern void setup_clear_cpu_cap(unsigned int bit);
 extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);
 
-#define setup_force_cpu_cap(bit) do { \
-       set_cpu_cap(&boot_cpu_data, bit);       \
+#define setup_force_cpu_cap(bit) do {                  \
+                                                       \
+       if (!boot_cpu_has(bit))                         \
+               WARN_ON(alternatives_patched);          \
+                                                       \
+       set_cpu_cap(&boot_cpu_data, bit);               \
        set_bit(bit, (unsigned long *)cpu_caps_set);    \
 } while (0)
 
 
        if (WARN_ON(feature >= MAX_FEATURE_BITS))
                return;
 
+       if (boot_cpu_has(feature))
+               WARN_ON(alternatives_patched);
+
        clear_feature(c, feature);
 
        /* Collect all features to disable, handling dependencies */