Commit dccbe204 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents f7c7a1ba 74736734
Loading
Loading
Loading
Loading
+10 −22
Original line number Diff line number Diff line
@@ -3362,36 +3362,24 @@ static bool dct_ecc_enabled(struct amd64_pvt *pvt)

static bool umc_ecc_enabled(struct amd64_pvt *pvt)
{
	u8 umc_en_mask = 0, ecc_en_mask = 0;
	u16 nid = pvt->mc_node_id;
	struct amd64_umc *umc;
	u8 ecc_en = 0, i;
	bool ecc_en = false;
	int i;

	/* Check whether at least one UMC is enabled: */
	for_each_umc(i) {
		umc = &pvt->umc[i];

		/* Only check enabled UMCs. */
		if (!(umc->sdp_ctrl & UMC_SDP_INIT))
			continue;

		umc_en_mask |= BIT(i);

		if (umc->umc_cap_hi & UMC_ECC_ENABLED)
			ecc_en_mask |= BIT(i);
		if (umc->sdp_ctrl & UMC_SDP_INIT &&
		    umc->umc_cap_hi & UMC_ECC_ENABLED) {
			ecc_en = true;
			break;
		}
	}

	/* Check whether at least one UMC is enabled: */
	if (umc_en_mask)
		ecc_en = umc_en_mask == ecc_en_mask;
	else
		edac_dbg(0, "Node %d: No enabled UMCs.\n", nid);

	edac_dbg(3, "Node %d: DRAM ECC %s.\n", nid, (ecc_en ? "enabled" : "disabled"));
	edac_dbg(3, "Node %d: DRAM ECC %s.\n", pvt->mc_node_id, (ecc_en ? "enabled" : "disabled"));

	if (!ecc_en)
		return false;
	else
		return true;
	return ecc_en;
}

static inline void