summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQiuxu Zhuo <qiuxu.zhuo@intel.com>2026-03-18 05:31:18 +0300
committerTony Luck <tony.luck@intel.com>2026-03-18 19:38:20 +0300
commit95ad29eb1baec322f31ddb247e5bf36f156578cf (patch)
treea58728de582c04d3d999c3d2514c74baa7cf1af7
parentf42f3076dd9d2cd1bde6abc44e45478fad8a1a54 (diff)
downloadlinux-95ad29eb1baec322f31ddb247e5bf36f156578cf.tar.xz
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: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Tested-by: Shawn Fan <shawn.fan@intel.com> Link: https://patch.msgid.link/20260318023118.2704139-1-qiuxu.zhuo@intel.com
-rw-r--r--drivers/edac/i10nm_base.c14
1 files changed, 14 insertions, 0 deletions
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;
}