drm/amdgpu: add error address query for umc ras
authorTao Zhou <tao.zhou1@amd.com>
Thu, 1 Aug 2019 03:41:39 +0000 (11:41 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 2 Aug 2019 15:30:38 +0000 (10:30 -0500)
umc error address query can get ce/ue error address and clear error
status

Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c

index e15fedb..2a48786 100644 (file)
@@ -601,6 +601,11 @@ int amdgpu_ras_error_query(struct amdgpu_device *adev,
        case AMDGPU_RAS_BLOCK__UMC:
                if (adev->umc.funcs->query_ras_error_count)
                        adev->umc.funcs->query_ras_error_count(adev, &err_data);
+               /* umc query_ras_error_address is also responsible for clearing
+                * error status
+                */
+               if (adev->umc.funcs->query_ras_error_address)
+                       adev->umc.funcs->query_ras_error_address(adev, &err_data);
                break;
        case AMDGPU_RAS_BLOCK__GFX:
                if (adev->gfx.funcs->query_ras_error_count)
index 2438702..c7647c6 100644 (file)
@@ -249,6 +249,11 @@ static int gmc_v9_0_process_ras_data_cb(struct amdgpu_device *adev,
        kgd2kfd_set_sram_ecc_flag(adev->kfd.dev);
        if (adev->umc.funcs->query_ras_error_count)
                adev->umc.funcs->query_ras_error_count(adev, err_data);
+       /* umc query_ras_error_address is also responsible for clearing
+        * error status
+        */
+       if (adev->umc.funcs->query_ras_error_address)
+               adev->umc.funcs->query_ras_error_address(adev, err_data);
        amdgpu_ras_reset_gpu(adev, 0);
        return AMDGPU_RAS_UE;
 }