drm/amd/amdgpu: Enable arcturus devices to access the method kgd_gfx_v9_get_cu_occupa...
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / amdgpu / nbio_v7_4.c
index e629156..eadc952 100644 (file)
@@ -302,6 +302,7 @@ static void nbio_v7_4_handle_ras_controller_intr_no_bifring(struct amdgpu_device
        uint32_t bif_doorbell_intr_cntl;
        struct ras_manager *obj = amdgpu_ras_find_obj(adev, adev->nbio.ras_if);
        struct ras_err_data err_data = {0, 0, 0, NULL};
+       struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
 
        bif_doorbell_intr_cntl = RREG32_SOC15(NBIO, 0, mmBIF_DOORBELL_INT_CNTL);
        if (REG_GET_FIELD(bif_doorbell_intr_cntl,
@@ -312,28 +313,31 @@ static void nbio_v7_4_handle_ras_controller_intr_no_bifring(struct amdgpu_device
                                                RAS_CNTLR_INTERRUPT_CLEAR, 1);
                WREG32_SOC15(NBIO, 0, mmBIF_DOORBELL_INT_CNTL, bif_doorbell_intr_cntl);
 
-               /*
-                * clear error status after ras_controller_intr according to
-                * hw team and count ue number for query
-                */
-               nbio_v7_4_query_ras_error_count(adev, &err_data);
-
-               /* logging on error counter and printing for awareness */
-               obj->err_data.ue_count += err_data.ue_count;
-               obj->err_data.ce_count += err_data.ce_count;
-
-               if (err_data.ce_count)
-                       dev_info(adev->dev, "%ld correctable hardware "
-                                       "errors detected in %s block, "
-                                       "no user action is needed.\n",
-                                       obj->err_data.ce_count,
-                                       adev->nbio.ras_if->name);
-
-               if (err_data.ue_count)
-                       dev_info(adev->dev, "%ld uncorrectable hardware "
-                                       "errors detected in %s block\n",
-                                       obj->err_data.ue_count,
-                                       adev->nbio.ras_if->name);
+               if (!ras->disable_ras_err_cnt_harvest) {
+                       /*
+                        * clear error status after ras_controller_intr
+                        * according to hw team and count ue number
+                        * for query
+                        */
+                       nbio_v7_4_query_ras_error_count(adev, &err_data);
+
+                       /* logging on error cnt and printing for awareness */
+                       obj->err_data.ue_count += err_data.ue_count;
+                       obj->err_data.ce_count += err_data.ce_count;
+
+                       if (err_data.ce_count)
+                               dev_info(adev->dev, "%ld correctable hardware "
+                                               "errors detected in %s block, "
+                                               "no user action is needed.\n",
+                                               obj->err_data.ce_count,
+                                               adev->nbio.ras_if->name);
+
+                       if (err_data.ue_count)
+                               dev_info(adev->dev, "%ld uncorrectable hardware "
+                                               "errors detected in %s block\n",
+                                               obj->err_data.ue_count,
+                                               adev->nbio.ras_if->name);
+               }
 
                dev_info(adev->dev, "RAS controller interrupt triggered "
                                        "by NBIF error\n");