x86/mce/amd: Add default names for MCA banks and blocks
authorYazen Ghannam <yazen.ghannam@amd.com>
Tue, 24 Jun 2025 14:15:58 +0000 (14:15 +0000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Fri, 27 Jun 2025 11:13:36 +0000 (13:13 +0200)
Ensure that sysfs init doesn't fail for new/unrecognized bank types or if
a bank has additional blocks available.

Most MCA banks have a single thresholding block, so the block takes the same
name as the bank.

Unified Memory Controllers (UMCs) are a special case where there are two
blocks and each has a unique name.

However, the microarchitecture allows for five blocks. Any new MCA bank types
with more than one block will be missing names for the extra blocks. The MCE
sysfs will fail to initialize in this case.

Fixes: 87a6d4091bd7 ("x86/mce/AMD: Update sysfs bank names for SMCA systems")
Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/20250624-wip-mca-updates-v4-3-236dd74f645f@amd.com
arch/x86/kernel/cpu/mce/amd.c

index 9d852c3b2cb5aa9ac620bef04fb19b058de64f8e..6820ebce5d46d7858b9c19414fdfb8c6883ba9d5 100644 (file)
@@ -1113,13 +1113,20 @@ static const char *get_name(unsigned int cpu, unsigned int bank, struct threshol
        }
 
        bank_type = smca_get_bank_type(cpu, bank);
-       if (bank_type >= N_SMCA_BANK_TYPES)
-               return NULL;
 
        if (b && (bank_type == SMCA_UMC || bank_type == SMCA_UMC_V2)) {
                if (b->block < ARRAY_SIZE(smca_umc_block_names))
                        return smca_umc_block_names[b->block];
-               return NULL;
+       }
+
+       if (b && b->block) {
+               snprintf(buf_mcatype, MAX_MCATYPE_NAME_LEN, "th_block_%u", b->block);
+               return buf_mcatype;
+       }
+
+       if (bank_type >= N_SMCA_BANK_TYPES) {
+               snprintf(buf_mcatype, MAX_MCATYPE_NAME_LEN, "th_bank_%u", bank);
+               return buf_mcatype;
        }
 
        if (per_cpu(smca_bank_counts, cpu)[bank_type] == 1)