[PATCH 1/1] EDAC/i10nm: Add driver decoder for Granite Rapids server

From: Qiuxu Zhuo

Date: Tue Mar 17 2026 - 22:35:09 EST


Current i10nm_edac only supports the firmware decoder (ACPI DSM methods)
for Granite Rapids servers. Add the driver decoder, which directly
extracts error information from the IMC MC error codes, to improve
decoding performance for Granite Rapids.

Tested-by: Shawn Fan <shawn.fan@xxxxxxxxx>
Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@xxxxxxxxx>
---
drivers/edac/i10nm_base.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/drivers/edac/i10nm_base.c b/drivers/edac/i10nm_base.c
index 89b3e8cc38b1..6f61b7614230 100644
--- a/drivers/edac/i10nm_base.c
+++ b/drivers/edac/i10nm_base.c
@@ -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;
}

base-commit: 11439c4635edd669ae435eec308f4ab8a0804808
--
2.43.0