Commit 95ad29eb authored by Qiuxu Zhuo's avatar Qiuxu Zhuo Committed by Tony Luck
Browse files

EDAC/i10nm: Add driver decoder for Granite Rapids server



Current i10nm_edac only supports the firmware decoder (ACPI DSM methods)
for Granite Rapids servers. Add the driver decoder, which directly extracts
topology information from the IMC machine check bank IA32_MCi_MISC MSRs, to
improve decoding performance for Granite Rapids.

[Tony: Updated commit comment]

Signed-off-by: default avatarQiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
Tested-by: default avatarShawn Fan <shawn.fan@intel.com>
Link: https://patch.msgid.link/20260318023118.2704139-1-qiuxu.zhuo@intel.com
parent f42f3076
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -580,6 +580,10 @@ static bool i10nm_mc_decode_available(struct mce *mce)
		if (bank < 13 || bank > 20)
			return false;
		break;
	case GNR:
		if (bank < 13 || bank > 24)
			return false;
		break;
	default:
		return false;
	}
@@ -637,6 +641,16 @@ static bool i10nm_mc_decode(struct decoded_addr *res)
		res->rank         = GET_BITFIELD(m->misc, 57, 57);
		res->dimm         = GET_BITFIELD(m->misc, 58, 58);
		break;
	case GNR:
		res->imc          = m->bank - 13;
		res->channel      = 0;
		res->column       = GET_BITFIELD(m->misc, 9, 18) << 2;
		res->row          = GET_BITFIELD(m->misc, 19, 36);
		res->bank_group   = GET_BITFIELD(m->misc, 39, 41);
		res->bank_address = GET_BITFIELD(m->misc, 37, 38);
		res->rank         = GET_BITFIELD(m->misc, 55, 56);
		res->dimm         = GET_BITFIELD(m->misc, 57, 57);
		break;
	default:
		return false;
	}