From: Hawking Zhang <[email protected]>

Add common helper to reset ras error status. It
applies to IP blocks that follow the new ras error
logging register design, and need to write 0 to
reset the error status. For IP blocks that don't
support the new design, please still implement ip
specific helper.

Signed-off-by: Hawking Zhang <[email protected]>
Reviewed-by: Tao Zhou <[email protected]>
Reviewed-by: Lijo Lazar <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 20 ++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h |  4 ++++
 2 files changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 3baf5d1bc08b..5e9e617b0812 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -3217,3 +3217,23 @@ void amdgpu_ras_inst_query_ras_error_count(struct 
amdgpu_device *adev,
                }
        }
 }
+
+void amdgpu_ras_inst_reset_ras_error_count(struct amdgpu_device *adev,
+                                          const struct 
amdgpu_ras_err_status_reg_entry *reg_list,
+                                          uint32_t reg_list_size,
+                                          uint32_t instance)
+{
+       uint32_t err_status_lo_offset, err_status_hi_offset;
+       uint32_t i;
+
+       for (i = 0; i < reg_list_size; i++) {
+               err_status_lo_offset =
+                       AMDGPU_RAS_REG_ENTRY_OFFSET(reg_list[i].hwip, instance,
+                                                   reg_list[i].seg_lo, 
reg_list[i].reg_lo);
+               err_status_hi_offset =
+                       AMDGPU_RAS_REG_ENTRY_OFFSET(reg_list[i].hwip, instance,
+                                                   reg_list[i].seg_hi, 
reg_list[i].reg_hi);
+               WREG32(err_status_lo_offset, 0);
+               WREG32(err_status_hi_offset, 0);
+       }
+}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
index 2ee51ec44211..21ea9137e3da 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
@@ -746,4 +746,8 @@ void amdgpu_ras_inst_query_ras_error_count(struct 
amdgpu_device *adev,
                                           uint32_t instance,
                                           uint32_t err_type,
                                           unsigned long *err_count);
+void amdgpu_ras_inst_reset_ras_error_count(struct amdgpu_device *adev,
+                                          const struct 
amdgpu_ras_err_status_reg_entry *reg_list,
+                                          uint32_t reg_list_size,
+                                          uint32_t instance);
 #endif
-- 
2.39.2

Reply via email to