[PATCH 004/109] drm/amd/ras: add interface to support parsing aca bank ecc info
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
From: YiPeng Chai <[email protected]> Add interface to support parsing aca bank ecc info. Signed-off-by: YiPeng Chai <[email protected]> Reviewed-by: Hawking Zhang <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/ras/core/aca.c | 18 ++++++++++++++++++ drivers/gpu/drm/amd/ras/core/aca.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/drivers/gpu/drm/amd/ras/core/aca.c b/drivers/gpu/drm/amd/ras/core/aca.c index 7c42a05b0207d..0b5d55e39e25a 100644 --- a/drivers/gpu/drm/amd/ras/core/aca.c +++ b/drivers/gpu/drm/amd/ras/core/aca.c @@ -170,6 +170,7 @@ static int aca_parse_bank(struct ras_core_context *ras_core, if (!bank_ops || !bank_ops->bank_parse) return -RAS_CORE_NOT_SUPPORTED; + ecc->block_id = aca_blk->blk_info->ras_block_id; return bank_ops->bank_parse(ras_core, aca_blk, bank, ecc); } @@ -687,3 +688,20 @@ int ras_aca_hw_fini(struct ras_core_context *ras_core) return 0; } + +int ras_aca_parse_bank(struct ras_core_context *ras_core, + struct aca_bank_reg *bank, + struct aca_bank_ecc *ecc) +{ + struct aca_block *aca_blk; + int ret = -ENODATA; + + if (!ras_core || !bank || !ecc) + return -EINVAL; + + aca_blk = aca_get_bank_aca_block(ras_core, bank); + if (aca_blk) + ret = aca_parse_bank(ras_core, aca_blk, bank, ecc); + + return ret; +} diff --git a/drivers/gpu/drm/amd/ras/core/aca.h b/drivers/gpu/drm/amd/ras/core/aca.h index 3c1e691cd2ee0..c1a48e713044d 100644 --- a/drivers/gpu/drm/amd/ras/core/aca.h +++ b/drivers/gpu/drm/amd/ras/core/aca.h @@ -79,6 +79,7 @@ struct aca_ecc_info { }; struct aca_bank_ecc { + u32 block_id; struct aca_ecc_info bank_info; u32 ce_count; u32 ue_count; @@ -161,4 +162,7 @@ int ras_aca_clear_all_blocks_ecc_count(struct ras_core_context *ras_core); int ras_aca_update_ecc(struct ras_core_context *ras_core, u32 ecc_type, void *data); void ras_aca_mark_fatal_flag(struct ras_core_context *ras_core); void ras_aca_clear_fatal_flag(struct ras_core_context *ras_core); +int ras_aca_parse_bank(struct ras_core_context *ras_core, + struct aca_bank_reg *bank, + struct aca_bank_ecc *ecc); #endif -- 2.55.0