]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/mce: Do 'UNKNOWN' vendor check early
authorYazen Ghannam <yazen.ghannam@amd.com>
Mon, 8 Sep 2025 15:40:33 +0000 (15:40 +0000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Thu, 11 Sep 2025 10:23:03 +0000 (12:23 +0200)
The 'UNKNOWN' vendor check is handled as a quirk that is run on each
online CPU. However, all CPUs are expected to have the same vendor.

Move the 'UNKNOWN' vendor check to the BSP-only init so it is done early
and once. Remove the unnecessary return value from the quirks check.

Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Nikolay Borisov <nik.borisov@suse.com>
Tested-by: Tony Luck <tony.luck@intel.com>
Link: https://lore.kernel.org/20250908-wip-mca-updates-v6-0-eef5d6c74b9c@amd.com
arch/x86/kernel/cpu/mce/core.c

index a8cb7ff53e32181b33706110f004834b88af9e52..515942cbfeb568fd4b00f4b2c8c4ada41f2e7373 100644 (file)
@@ -1977,14 +1977,11 @@ static void apply_quirks_zhaoxin(struct cpuinfo_x86 *c)
 }
 
 /* Add per CPU specific workarounds here */
-static bool __mcheck_cpu_apply_quirks(struct cpuinfo_x86 *c)
+static void __mcheck_cpu_apply_quirks(struct cpuinfo_x86 *c)
 {
        struct mca_config *cfg = &mca_cfg;
 
        switch (c->x86_vendor) {
-       case X86_VENDOR_UNKNOWN:
-               pr_info("unknown CPU type - not enabling MCE support\n");
-               return false;
        case X86_VENDOR_AMD:
                apply_quirks_amd(c);
                break;
@@ -2000,8 +1997,6 @@ static bool __mcheck_cpu_apply_quirks(struct cpuinfo_x86 *c)
                cfg->monarch_timeout = 0;
        if (cfg->bootlog != 0)
                cfg->panic_timeout = 30;
-
-       return true;
 }
 
 static bool __mcheck_cpu_ancient_init(struct cpuinfo_x86 *c)
@@ -2240,6 +2235,12 @@ void mca_bsp_init(struct cpuinfo_x86 *c)
        if (!mce_available(c))
                return;
 
+       if (c->x86_vendor == X86_VENDOR_UNKNOWN) {
+               mca_cfg.disabled = 1;
+               pr_info("unknown CPU type - not enabling MCE support\n");
+               return;
+       }
+
        mce_flags.overflow_recov = cpu_feature_enabled(X86_FEATURE_OVERFLOW_RECOV);
        mce_flags.succor         = cpu_feature_enabled(X86_FEATURE_SUCCOR);
        mce_flags.smca           = cpu_feature_enabled(X86_FEATURE_SMCA);
@@ -2274,10 +2275,7 @@ void mcheck_cpu_init(struct cpuinfo_x86 *c)
 
        __mcheck_cpu_cap_init();
 
-       if (!__mcheck_cpu_apply_quirks(c)) {
-               mca_cfg.disabled = 1;
-               return;
-       }
+       __mcheck_cpu_apply_quirks(c);
 
        if (!mce_gen_pool_init()) {
                mca_cfg.disabled = 1;