[AMD Official Use Only - AMD Internal Distribution Only]

Series is

Reviewed-by: Hawking Zhang <[email protected]>

Regards,
Hawking
-----Original Message-----
From: Chai, Thomas <[email protected]>
Sent: Friday, October 17, 2025 15:52
To: [email protected]
Cc: Zhang, Hawking <[email protected]>; Zhou1, Tao <[email protected]>; Li, 
Candice <[email protected]>; Yang, Stanley <[email protected]>; Su, Joe 
<[email protected]>; Chai, Thomas <[email protected]>; Zhou1, Tao 
<[email protected]>
Subject: [PATCH 5/5] drm/amdgpu: query block error count of ras module

Query block error count of ras module.

Signed-off-by: YiPeng Chai <[email protected]>
Reviewed-by: Tao Zhou <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 29 ++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
index 5d5e1c0154b2..3150d736a4e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
@@ -1543,9 +1543,36 @@ static int 
amdgpu_ras_query_error_status_with_event(struct amdgpu_device *adev,
        return ret;
 }

+static int amdgpu_uniras_query_block_ecc(struct amdgpu_device *adev,
+                       struct ras_query_if *info)
+{
+       struct ras_cmd_block_ecc_info_req req = {0};
+       struct ras_cmd_block_ecc_info_rsp rsp = {0};
+       int ret;
+
+       if (!info)
+               return -EINVAL;
+
+       req.block_id = info->head.block;
+       req.subblock_id = info->head.sub_block_index;
+
+       ret = amdgpu_ras_mgr_handle_ras_cmd(adev, RAS_CMD__GET_BLOCK_ECC_STATUS,
+                               &req, sizeof(req), &rsp, sizeof(rsp));
+       if (!ret) {
+               info->ce_count = rsp.ce_count;
+               info->ue_count = rsp.ue_count;
+               info->de_count = rsp.de_count;
+       }
+
+       return ret;
+}
+
 int amdgpu_ras_query_error_status(struct amdgpu_device *adev, struct 
ras_query_if *info)  {
-       return amdgpu_ras_query_error_status_with_event(adev, info, 
RAS_EVENT_TYPE_INVALID);
+       if (amdgpu_uniras_enabled(adev))
+               return amdgpu_uniras_query_block_ecc(adev, info);
+       else
+               return amdgpu_ras_query_error_status_with_event(adev, info,
+RAS_EVENT_TYPE_INVALID);
 }

 int amdgpu_ras_reset_error_count(struct amdgpu_device *adev,
--
2.34.1

Reply via email to