Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

EDAC: Use string choice helper functions

Remove hard-coded strings by using the str_enabled_disabled(), str_yes_no(),
str_write_read(), and str_plural() helper functions.

Add a space in "All DIMMs support ECC: yes/no" to improve readability.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Yazen Ghannam <yazen.ghannam@amd.com>
Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Link: https://lore.kernel.org/r/20250223212429.3466-2-thorsten.blum@linux.dev

authored by

Thorsten Blum and committed by
Borislav Petkov (AMD)
d0905512 0ad2507d

+42 -37
+23 -24
drivers/edac/amd64_edac.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 2 #include <linux/ras.h> 3 + #include <linux/string_choices.h> 3 4 #include "amd64_edac.h" 4 5 #include <asm/amd_nb.h> 5 6 #include <asm/amd_node.h> ··· 1172 1171 edac_dbg(1, " LRDIMM %dx rank multiply\n", (dcsm & 0x3)); 1173 1172 } 1174 1173 1175 - edac_dbg(1, "All DIMMs support ECC:%s\n", 1176 - (dclr & BIT(19)) ? "yes" : "no"); 1174 + edac_dbg(1, "All DIMMs support ECC: %s\n", str_yes_no(dclr & BIT(19))); 1177 1175 1178 1176 1179 1177 edac_dbg(1, " PAR/ERR parity: %s\n", 1180 - (dclr & BIT(8)) ? "enabled" : "disabled"); 1178 + str_enabled_disabled(dclr & BIT(8))); 1181 1179 1182 1180 if (pvt->fam == 0x10) 1183 1181 edac_dbg(1, " DCT 128bit mode width: %s\n", 1184 1182 (dclr & BIT(11)) ? "128b" : "64b"); 1185 1183 1186 1184 edac_dbg(1, " x4 logical DIMMs present: L0: %s L1: %s L2: %s L3: %s\n", 1187 - (dclr & BIT(12)) ? "yes" : "no", 1188 - (dclr & BIT(13)) ? "yes" : "no", 1189 - (dclr & BIT(14)) ? "yes" : "no", 1190 - (dclr & BIT(15)) ? "yes" : "no"); 1185 + str_yes_no(dclr & BIT(12)), 1186 + str_yes_no(dclr & BIT(13)), 1187 + str_yes_no(dclr & BIT(14)), 1188 + str_yes_no(dclr & BIT(15))); 1191 1189 } 1192 1190 1193 1191 #define CS_EVEN_PRIMARY BIT(0) ··· 1353 1353 edac_dbg(1, "UMC%d UMC cap high: 0x%x\n", i, umc->umc_cap_hi); 1354 1354 1355 1355 edac_dbg(1, "UMC%d ECC capable: %s, ChipKill ECC capable: %s\n", 1356 - i, (umc->umc_cap_hi & BIT(30)) ? "yes" : "no", 1357 - (umc->umc_cap_hi & BIT(31)) ? "yes" : "no"); 1356 + i, str_yes_no(umc->umc_cap_hi & BIT(30)), 1357 + str_yes_no(umc->umc_cap_hi & BIT(31))); 1358 1358 edac_dbg(1, "UMC%d All DIMMs support ECC: %s\n", 1359 - i, (umc->umc_cfg & BIT(12)) ? "yes" : "no"); 1359 + i, str_yes_no(umc->umc_cfg & BIT(12))); 1360 1360 edac_dbg(1, "UMC%d x4 DIMMs present: %s\n", 1361 - i, (umc->dimm_cfg & BIT(6)) ? "yes" : "no"); 1361 + i, str_yes_no(umc->dimm_cfg & BIT(6))); 1362 1362 edac_dbg(1, "UMC%d x16 DIMMs present: %s\n", 1363 - i, (umc->dimm_cfg & BIT(7)) ? "yes" : "no"); 1363 + i, str_yes_no(umc->dimm_cfg & BIT(7))); 1364 1364 1365 1365 umc_debug_display_dimm_sizes(pvt, i); 1366 1366 } ··· 1371 1371 edac_dbg(1, "F3xE8 (NB Cap): 0x%08x\n", pvt->nbcap); 1372 1372 1373 1373 edac_dbg(1, " NB two channel DRAM capable: %s\n", 1374 - (pvt->nbcap & NBCAP_DCT_DUAL) ? "yes" : "no"); 1374 + str_yes_no(pvt->nbcap & NBCAP_DCT_DUAL)); 1375 1375 1376 1376 edac_dbg(1, " ECC capable: %s, ChipKill ECC capable: %s\n", 1377 - (pvt->nbcap & NBCAP_SECDED) ? "yes" : "no", 1378 - (pvt->nbcap & NBCAP_CHIPKILL) ? "yes" : "no"); 1377 + str_yes_no(pvt->nbcap & NBCAP_SECDED), 1378 + str_yes_no(pvt->nbcap & NBCAP_CHIPKILL)); 1379 1379 1380 1380 debug_dump_dramcfg_low(pvt, pvt->dclr0, 0); 1381 1381 ··· 1398 1398 if (!dct_ganging_enabled(pvt)) 1399 1399 debug_dump_dramcfg_low(pvt, pvt->dclr1, 1); 1400 1400 1401 - edac_dbg(1, " DramHoleValid: %s\n", dhar_valid(pvt) ? "yes" : "no"); 1401 + edac_dbg(1, " DramHoleValid: %s\n", str_yes_no(dhar_valid(pvt))); 1402 1402 1403 1403 amd64_info("using x%u syndromes.\n", pvt->ecc_sym_sz); 1404 1404 } ··· 2027 2027 2028 2028 if (!dct_ganging_enabled(pvt)) 2029 2029 edac_dbg(0, " Address range split per DCT: %s\n", 2030 - (dct_high_range_enabled(pvt) ? "yes" : "no")); 2030 + str_yes_no(dct_high_range_enabled(pvt))); 2031 2031 2032 2032 edac_dbg(0, " data interleave for ECC: %s, DRAM cleared since last warm reset: %s\n", 2033 - (dct_data_intlv_enabled(pvt) ? "enabled" : "disabled"), 2034 - (dct_memory_cleared(pvt) ? "yes" : "no")); 2033 + str_enabled_disabled(dct_data_intlv_enabled(pvt)), 2034 + str_yes_no(dct_memory_cleared(pvt))); 2035 2035 2036 2036 edac_dbg(0, " channel interleave: %s, " 2037 2037 "interleave bits selector: 0x%x\n", 2038 - (dct_interleave_enabled(pvt) ? "enabled" : "disabled"), 2038 + str_enabled_disabled(dct_interleave_enabled(pvt)), 2039 2039 dct_sel_interleave_addr(pvt)); 2040 2040 } 2041 2041 ··· 3208 3208 nbe = reg->l & MSR_MCGCTL_NBE; 3209 3209 3210 3210 edac_dbg(0, "core: %u, MCG_CTL: 0x%llx, NB MSR is %s\n", 3211 - cpu, reg->q, 3212 - (nbe ? "enabled" : "disabled")); 3211 + cpu, reg->q, str_enabled_disabled(nbe)); 3213 3212 3214 3213 if (!nbe) 3215 3214 goto out; ··· 3352 3353 edac_dbg(0, "NB MCE bank disabled, set MSR 0x%08x[4] on node %d to enable.\n", 3353 3354 MSR_IA32_MCG_CTL, nid); 3354 3355 3355 - edac_dbg(3, "Node %d: DRAM ECC %s.\n", nid, (ecc_en ? "enabled" : "disabled")); 3356 + edac_dbg(3, "Node %d: DRAM ECC %s.\n", nid, str_enabled_disabled(ecc_en)); 3356 3357 3357 3358 if (!ecc_en || !nb_mce_en) 3358 3359 return false; ··· 3377 3378 } 3378 3379 } 3379 3380 3380 - edac_dbg(3, "Node %d: DRAM ECC %s.\n", pvt->mc_node_id, (ecc_en ? "enabled" : "disabled")); 3381 + edac_dbg(3, "Node %d: DRAM ECC %s.\n", pvt->mc_node_id, str_enabled_disabled(ecc_en)); 3381 3382 3382 3383 return ecc_en; 3383 3384 }
+4 -1
drivers/edac/debugfs.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 + 3 + #include <linux/string_choices.h> 4 + 2 5 #include "edac_module.h" 3 6 4 7 static struct dentry *edac_debugfs; ··· 25 22 "Generating %d %s fake error%s to %d.%d.%d to test core handling. NOTE: this won't test the driver-specific decoding logic.\n", 26 23 errcount, 27 24 (type == HW_EVENT_ERR_UNCORRECTED) ? "UE" : "CE", 28 - errcount > 1 ? "s" : "", 25 + str_plural(errcount), 29 26 mci->fake_inject_layer[0], 30 27 mci->fake_inject_layer[1], 31 28 mci->fake_inject_layer[2]
+2 -1
drivers/edac/i5400_edac.c
··· 31 31 #include <linux/slab.h> 32 32 #include <linux/edac.h> 33 33 #include <linux/mmzone.h> 34 + #include <linux/string_choices.h> 34 35 35 36 #include "edac_module.h" 36 37 ··· 900 899 edac_dbg(2, "\t\tWIDTH: x%d\n", MTR_DRAM_WIDTH(mtr)); 901 900 902 901 edac_dbg(2, "\t\tELECTRICAL THROTTLING is %s\n", 903 - MTR_DIMMS_ETHROTTLE(mtr) ? "enabled" : "disabled"); 902 + str_enabled_disabled(MTR_DIMMS_ETHROTTLE(mtr))); 904 903 905 904 edac_dbg(2, "\t\tNUMBANK: %d bank(s)\n", MTR_DRAM_BANKS(mtr)); 906 905 edac_dbg(2, "\t\tNUMRANK: %s\n",
+4 -3
drivers/edac/i7300_edac.c
··· 23 23 #include <linux/slab.h> 24 24 #include <linux/edac.h> 25 25 #include <linux/mmzone.h> 26 + #include <linux/string_choices.h> 26 27 27 28 #include "edac_module.h" 28 29 ··· 621 620 edac_dbg(2, "\t\tWIDTH: x%d\n", MTR_DRAM_WIDTH(mtr)); 622 621 623 622 edac_dbg(2, "\t\tELECTRICAL THROTTLING is %s\n", 624 - MTR_DIMMS_ETHROTTLE(mtr) ? "enabled" : "disabled"); 623 + str_enabled_disabled(MTR_DIMMS_ETHROTTLE(mtr))); 625 624 626 625 edac_dbg(2, "\t\tNUMBANK: %d bank(s)\n", MTR_DRAM_BANKS(mtr)); 627 626 edac_dbg(2, "\t\tNUMRANK: %s\n", ··· 872 871 IS_MIRRORED(pvt->mc_settings) ? "" : "non-"); 873 872 874 873 edac_dbg(0, "Error detection is %s\n", 875 - IS_ECC_ENABLED(pvt->mc_settings) ? "enabled" : "disabled"); 874 + str_enabled_disabled(IS_ECC_ENABLED(pvt->mc_settings))); 876 875 edac_dbg(0, "Retry is %s\n", 877 - IS_RETRY_ENABLED(pvt->mc_settings) ? "enabled" : "disabled"); 876 + str_enabled_disabled(IS_RETRY_ENABLED(pvt->mc_settings))); 878 877 879 878 /* Get Memory Interleave Range registers */ 880 879 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR0,
+9 -8
drivers/edac/xgene_edac.c
··· 15 15 #include <linux/of.h> 16 16 #include <linux/of_address.h> 17 17 #include <linux/regmap.h> 18 + #include <linux/string_choices.h> 18 19 19 20 #include "edac_module.h" 20 21 ··· 1408 1407 dev_err(edac_dev->dev, "Multiple XGIC write size error\n"); 1409 1408 info = readl(ctx->dev_csr + XGICTRANSERRREQINFO); 1410 1409 dev_err(edac_dev->dev, "XGIC %s access @ 0x%08X (0x%08X)\n", 1411 - info & REQTYPE_MASK ? "read" : "write", ERRADDR_RD(info), 1410 + str_read_write(info & REQTYPE_MASK), ERRADDR_RD(info), 1412 1411 info); 1413 1412 writel(reg, ctx->dev_csr + XGICTRANSERRINTSTS); 1414 1413 ··· 1490 1489 if (reg & AGENT_OFFLINE_ERR_MASK) 1491 1490 dev_err(edac_dev->dev, 1492 1491 "IOB bus %s access to offline agent error\n", 1493 - write ? "write" : "read"); 1492 + str_write_read(write)); 1494 1493 if (reg & UNIMPL_RBPAGE_ERR_MASK) 1495 1494 dev_err(edac_dev->dev, 1496 1495 "IOB bus %s access to unimplemented page error\n", 1497 - write ? "write" : "read"); 1496 + str_write_read(write)); 1498 1497 if (reg & WORD_ALIGNED_ERR_MASK) 1499 1498 dev_err(edac_dev->dev, 1500 1499 "IOB bus %s word aligned access error\n", 1501 - write ? "write" : "read"); 1500 + str_write_read(write)); 1502 1501 if (reg & PAGE_ACCESS_ERR_MASK) 1503 1502 dev_err(edac_dev->dev, 1504 1503 "IOB bus %s to page out of range access error\n", 1505 - write ? "write" : "read"); 1504 + str_write_read(write)); 1506 1505 if (regmap_write(ctx->edac->rb_map, RBEIR, 0)) 1507 1506 return; 1508 1507 if (regmap_write(ctx->edac->rb_map, RBCSR, 0)) ··· 1561 1560 err_addr_lo = readl(ctx->dev_csr + IOBBATRANSERRREQINFOL); 1562 1561 err_addr_hi = readl(ctx->dev_csr + IOBBATRANSERRREQINFOH); 1563 1562 dev_err(edac_dev->dev, "IOB BA %s access at 0x%02X.%08X (0x%08X)\n", 1564 - REQTYPE_F2_RD(err_addr_hi) ? "read" : "write", 1563 + str_read_write(REQTYPE_F2_RD(err_addr_hi)), 1565 1564 ERRADDRH_F2_RD(err_addr_hi), err_addr_lo, err_addr_hi); 1566 1565 if (reg & WRERR_RESP_MASK) 1567 1566 dev_err(edac_dev->dev, "IOB BA requestor ID 0x%08X\n", ··· 1612 1611 dev_err(edac_dev->dev, 1613 1612 "%sAXI slave 0 illegal %s access @ 0x%02X.%08X (0x%08X)\n", 1614 1613 reg & IOBAXIS0_M_ILLEGAL_ACCESS_MASK ? "Multiple " : "", 1615 - REQTYPE_RD(err_addr_hi) ? "read" : "write", 1614 + str_read_write(REQTYPE_RD(err_addr_hi)), 1616 1615 ERRADDRH_RD(err_addr_hi), err_addr_lo, err_addr_hi); 1617 1616 writel(reg, ctx->dev_csr + IOBAXIS0TRANSERRINTSTS); 1618 1617 ··· 1626 1625 dev_err(edac_dev->dev, 1627 1626 "%sAXI slave 1 illegal %s access @ 0x%02X.%08X (0x%08X)\n", 1628 1627 reg & IOBAXIS0_M_ILLEGAL_ACCESS_MASK ? "Multiple " : "", 1629 - REQTYPE_RD(err_addr_hi) ? "read" : "write", 1628 + str_read_write(REQTYPE_RD(err_addr_hi)), 1630 1629 ERRADDRH_RD(err_addr_hi), err_addr_lo, err_addr_hi); 1631 1630 writel(reg, ctx->dev_csr + IOBAXIS1TRANSERRINTSTS); 1632 1631 }