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 <xiang.liu@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Xiang Liu 2026-08-26 10:57:31 +08:00 committed by Alex Deucher
parent 8fad652e72
commit 004ffd7af4

View File

@ -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);