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

Merge tag 'edac_urgent_for_v6.13_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras

Pull EDAC fix from Borislav Petkov:

- Make sure amd64_edac loads successfully on certain Zen4 memory
configurations

* tag 'edac_urgent_for_v6.13_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
EDAC/amd64: Simplify ECC check on unified memory controllers

+10 -22
+10 -22
drivers/edac/amd64_edac.c
··· 3362 3362 3363 3363 static bool umc_ecc_enabled(struct amd64_pvt *pvt) 3364 3364 { 3365 - u8 umc_en_mask = 0, ecc_en_mask = 0; 3366 - u16 nid = pvt->mc_node_id; 3367 3365 struct amd64_umc *umc; 3368 - u8 ecc_en = 0, i; 3366 + bool ecc_en = false; 3367 + int i; 3369 3368 3369 + /* Check whether at least one UMC is enabled: */ 3370 3370 for_each_umc(i) { 3371 3371 umc = &pvt->umc[i]; 3372 3372 3373 - /* Only check enabled UMCs. */ 3374 - if (!(umc->sdp_ctrl & UMC_SDP_INIT)) 3375 - continue; 3376 - 3377 - umc_en_mask |= BIT(i); 3378 - 3379 - if (umc->umc_cap_hi & UMC_ECC_ENABLED) 3380 - ecc_en_mask |= BIT(i); 3373 + if (umc->sdp_ctrl & UMC_SDP_INIT && 3374 + umc->umc_cap_hi & UMC_ECC_ENABLED) { 3375 + ecc_en = true; 3376 + break; 3377 + } 3381 3378 } 3382 3379 3383 - /* Check whether at least one UMC is enabled: */ 3384 - if (umc_en_mask) 3385 - ecc_en = umc_en_mask == ecc_en_mask; 3386 - else 3387 - edac_dbg(0, "Node %d: No enabled UMCs.\n", nid); 3380 + edac_dbg(3, "Node %d: DRAM ECC %s.\n", pvt->mc_node_id, (ecc_en ? "enabled" : "disabled")); 3388 3381 3389 - edac_dbg(3, "Node %d: DRAM ECC %s.\n", nid, (ecc_en ? "enabled" : "disabled")); 3390 - 3391 - if (!ecc_en) 3392 - return false; 3393 - else 3394 - return true; 3382 + return ecc_en; 3395 3383 } 3396 3384 3397 3385 static inline void