From 004ffd7af49eca3f3e5bb5b4a67ae931165856d1 Mon Sep 17 00:00:00 2001 From: Xiang Liu Date: Wed, 26 Aug 2026 10:57:31 +0800 Subject: [PATCH] drm/amd/ras: skip poison banks read through the UE channel Outside of UMC a bank with the poison bit set describes the consumption of an error that was already reported, not a new uncorrectable one. Injecting an uncorrectable error while a workload is running therefore buries the real bank under a dump of GFX poison banks collected from every other device of the hive. Signed-off-by: Xiang Liu Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/ras/core/aca.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/gpu/drm/amd/ras/core/aca.c b/drivers/gpu/drm/amd/ras/core/aca.c index 0f5e57965ac8..f316f49c24bd 100644 --- a/drivers/gpu/drm/amd/ras/core/aca.c +++ b/drivers/gpu/drm/amd/ras/core/aca.c @@ -403,6 +403,13 @@ static int aca_banks_update(struct ras_core_context *ras_core, memset(&bank_ecc, 0, sizeof(bank_ecc)); aca_blk = aca_get_bank_aca_block(ras_core, &bank); + + /* Outside of UMC a poison bank is a consumption, not a new error. */ + if (ecc_type == RAS_ERR_TYPE__UE && + ACA_REG_STATUS_POISON(bank.regs[ACA_REG_IDX__STATUS]) && + (!aca_blk || aca_blk->blk_info->ras_block_id != RAS_BLOCK_ID__UMC)) + continue; + if (aca_blk) ret = aca_parse_bank(ras_core, aca_blk, &bank, &bank_ecc);