]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/ras: make MCA IPID parse global
authorTao Zhou <tao.zhou1@amd.com>
Mon, 15 Dec 2025 05:53:59 +0000 (13:53 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 4 Mar 2026 16:42:00 +0000 (11:42 -0500)
add a new IPID parse interface for umc, so we can
implement it for each ASIC, and so we can call it
in other blocks

Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Gangliang Xie <ganglxie@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/ras/rascore/ras_umc.h
drivers/gpu/drm/amd/ras/rascore/ras_umc_v12_0.c

index 3aeb04977d53b4e52eaabfd2209ba435751ffae4..1d3026be509b81a41b371821d50e6d6ab822f123 100644 (file)
@@ -108,6 +108,8 @@ struct ras_umc_ip_func {
                        struct umc_bank_addr bank_addr, uint64_t *soc_pa);
        int (*soc_pa_to_bank)(struct ras_core_context *ras_core,
                        uint64_t soc_pa, struct umc_bank_addr *bank_addr);
+       void (*mca_ipid_parse)(struct ras_core_context *ras_core, uint64_t ipid,
+                       uint32_t *did, uint32_t *ch, uint32_t *umc_inst, uint32_t *sid);
 };
 
 struct eeprom_store_record {
index 5d9a11c17a86421be962c0e14deab96301712569..e2792b239bea96494b8c80b334bab18be265312b 100644 (file)
@@ -501,11 +501,25 @@ static int umc_12_0_bank_to_soc_pa(struct ras_core_context *ras_core,
        return 0;
 }
 
+static void umc_v12_0_mca_ipid_parse(struct ras_core_context *ras_core, uint64_t ipid,
+               uint32_t *did, uint32_t *ch, uint32_t *umc_inst, uint32_t *sid)
+{
+       if (did)
+               *did = ACA_IPID_2_DIE_ID(ipid);
+       if (ch)
+               *ch = ACA_IPID_2_UMC_CH(ipid);
+       if (umc_inst)
+               *umc_inst = ACA_IPID_2_UMC_INST(ipid);
+       if (sid)
+               *sid = ACA_IPID_2_SOCKET_ID(ipid);
+}
+
 const struct ras_umc_ip_func ras_umc_func_v12_0 = {
        .bank_to_eeprom_record = umc_v12_0_bank_to_eeprom_record,
        .eeprom_record_to_nps_record = umc_v12_0_eeprom_record_to_nps_record,
        .eeprom_record_to_nps_pages = umc_v12_0_eeprom_record_to_nps_pages,
        .bank_to_soc_pa = umc_12_0_bank_to_soc_pa,
        .soc_pa_to_bank = umc_12_0_soc_pa_to_bank,
+       .mca_ipid_parse = umc_v12_0_mca_ipid_parse,
 };