]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_mca.c
Merge tag 'backlight-next-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/lee...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_mca.c
index 210aea590a52ed7bc87c98776e5fd5107e0e7aea..59fafb8392e0bae775e721e166aac800dfbdc98c 100644 (file)
@@ -218,6 +218,7 @@ static void amdgpu_mca_smu_mca_bank_dump(struct amdgpu_device *adev, int idx, st
 int amdgpu_mca_smu_log_ras_error(struct amdgpu_device *adev, enum amdgpu_ras_block blk, enum amdgpu_mca_error_type type, struct ras_err_data *err_data)
 {
        struct amdgpu_smuio_mcm_config_info mcm_info;
+       struct ras_err_addr err_addr = {0};
        struct mca_bank_set mca_set;
        struct mca_bank_node *node;
        struct mca_bank_entry *entry;
@@ -246,10 +247,18 @@ int amdgpu_mca_smu_log_ras_error(struct amdgpu_device *adev, enum amdgpu_ras_blo
                mcm_info.socket_id = entry->info.socket_id;
                mcm_info.die_id = entry->info.aid;
 
+               if (blk == AMDGPU_RAS_BLOCK__UMC) {
+                       err_addr.err_status = entry->regs[MCA_REG_IDX_STATUS];
+                       err_addr.err_ipid = entry->regs[MCA_REG_IDX_IPID];
+                       err_addr.err_addr = entry->regs[MCA_REG_IDX_ADDR];
+               }
+
                if (type == AMDGPU_MCA_ERROR_TYPE_UE)
-                       amdgpu_ras_error_statistic_ue_count(err_data, &mcm_info, (uint64_t)count);
+                       amdgpu_ras_error_statistic_ue_count(err_data,
+                               &mcm_info, &err_addr, (uint64_t)count);
                else
-                       amdgpu_ras_error_statistic_ce_count(err_data, &mcm_info, (uint64_t)count);
+                       amdgpu_ras_error_statistic_ce_count(err_data,
+                               &mcm_info, &err_addr, (uint64_t)count);
        }
 
 out_mca_release:
@@ -351,6 +360,9 @@ int amdgpu_mca_smu_get_mca_entry(struct amdgpu_device *adev, enum amdgpu_mca_err
        const struct amdgpu_mca_smu_funcs *mca_funcs = adev->mca.mca_funcs;
        int count;
 
+       if (!mca_funcs || !mca_funcs->mca_get_mca_entry)
+               return -EOPNOTSUPP;
+
        switch (type) {
        case AMDGPU_MCA_ERROR_TYPE_UE:
                count = mca_funcs->max_ue_count;
@@ -365,10 +377,7 @@ int amdgpu_mca_smu_get_mca_entry(struct amdgpu_device *adev, enum amdgpu_mca_err
        if (idx >= count)
                return -EINVAL;
 
-       if (mca_funcs && mca_funcs->mca_get_mca_entry)
-               return mca_funcs->mca_get_mca_entry(adev, type, idx, entry);
-
-       return -EOPNOTSUPP;
+       return mca_funcs->mca_get_mca_entry(adev, type, idx, entry);
 }
 
 #if defined(CONFIG_DEBUG_FS)
This page took 0.037755 seconds and 4 git commands to generate.