<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Calibri;font-size:10pt;color:#0000FF;margin:5pt;font-style:normal;font-weight:normal;text-decoration:none;" align="Left">
[AMD Official Use Only - AMD Internal Distribution Only]<br>
</p>
<br>
<div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thanks, as the discuss offline, will improve it.</div>
<p class="elementToProof" style="text-align: left; text-indent: 0px; background-color: white; margin: 0px;">
<span style="font-family: Aptos, sans-serif; font-size: 11pt; color: black;">Best Regards,</span></p>
<p class="elementToProof" style="text-align: left; text-indent: 0px; background-color: white; margin: 0px;">
<span style="font-family: Aptos, sans-serif; font-size: 11pt; color: black;">Dean</span></p>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Wang, Yang(Kevin) <KevinYang.Wang@amd.com><br>
<b>Sent:</b> Thursday, March 20, 2025 3:05 PM<br>
<b>To:</b> Liu, Xiang(Dean) <Xiang.Liu@amd.com>; amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org><br>
<b>Cc:</b> Zhang, Hawking <Hawking.Zhang@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Chai, Thomas <YiPeng.Chai@amd.com><br>
<b>Subject:</b> RE: [PATCH] drm/amdgpu: Decode deferred error type in gfx aca bank parser</font>
<div> </div>
</div>
<div class="BodyFragment"><font face="Times New Roman" size="3"><span style="font-size:12pt;"><a name="BM_BEGIN"></a>
<div><font size="2"><span style="font-size:11pt;">[AMD Official Use Only - AMD Internal Distribution Only]<br>
<br>
+       if (type == ACA_ERROR_TYPE_UE)<br>
+               aca_log_aca_error(handle, ACA_ERROR_TYPE_DEFERRED, err_data);<br>
+<br>
        return aca_log_aca_error(handle, type, err_data);  }<br>
<br>
It seems that the above code is incorrect, which may lead to error statistics of different types of errors.<br>
In the aca parser interface, I think there is enough information to identify the types of errors and correctly count errors,<br>
Please double check it, thanks.<br>
<br>
Best Regards,<br>
Kevin<br>
<br>
-----Original Message-----<br>
From: Liu, Xiang(Dean) <Xiang.Liu@amd.com><br>
Sent: Thursday, March 20, 2025 14:15<br>
To: amd-gfx@lists.freedesktop.org<br>
Cc: Zhang, Hawking <Hawking.Zhang@amd.com>; Wang, Yang(Kevin) <KevinYang.Wang@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>; Chai, Thomas <YiPeng.Chai@amd.com>; Liu, Xiang(Dean) <Xiang.Liu@amd.com><br>
Subject: [PATCH] drm/amdgpu: Decode deferred error type in gfx aca bank parser<br>
<br>
In the case of injecting uncorrected error with background workload, the deferred error among uncorrected errors need to be specified by checking the deferred and poison bits of status register.<br>
<br>
Signed-off-by: Xiang Liu <xiang.liu@amd.com><br>
---<br>
 drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c |  3 +++  drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 11 +++++++----<br>
 2 files changed, 10 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c<br>
index ffd4c64e123c..3f45a600f547 100644<br>
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c<br>
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_aca.c<br>
@@ -541,6 +541,9 @@ static int __aca_get_error_data(struct amdgpu_device *adev, struct aca_handle *h<br>
        if (ret)<br>
                return ret;<br>
<br>
+       if (type == ACA_ERROR_TYPE_UE)<br>
+               aca_log_aca_error(handle, ACA_ERROR_TYPE_DEFERRED, err_data);<br>
+<br>
        return aca_log_aca_error(handle, type, err_data);  }<br>
<br>
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c<br>
index c0de682b7774..b21d784a7f9c 100644<br>
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c<br>
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c<br>
@@ -876,7 +876,7 @@ static int gfx_v9_4_3_aca_bank_parser(struct aca_handle *handle,<br>
                                      void *data)<br>
 {<br>
        struct aca_bank_info info;<br>
-       u64 misc0;<br>
+       u64 misc0, status;<br>
        u32 instlo;<br>
        int ret;<br>
<br>
@@ -890,12 +890,15 @@ static int gfx_v9_4_3_aca_bank_parser(struct aca_handle *handle,<br>
        info.die_id = instlo == mmSMNAID_XCD0_MCA_SMU ? 0 : 1;<br>
<br>
        misc0 = bank->regs[ACA_REG_IDX_MISC0];<br>
+       status = bank->regs[ACA_REG_IDX_STATUS];<br>
<br>
        switch (type) {<br>
        case ACA_SMU_TYPE_UE:<br>
-               bank->aca_err_type = ACA_ERROR_TYPE_UE;<br>
-               ret = aca_error_cache_log_bank_error(handle, &info,<br>
-                                                    ACA_ERROR_TYPE_UE, 1ULL);<br>
+               bank->aca_err_type = (ACA_REG__STATUS__POISON(status) ||<br>
+                                     ACA_REG__STATUS__DEFERRED(status)) ?<br>
+                                               ACA_ERROR_TYPE_DEFERRED :<br>
+                                               ACA_ERROR_TYPE_UE;<br>
+               ret = aca_error_cache_log_bank_error(handle, &info,<br>
+bank->aca_err_type, 1ULL);<br>
                break;<br>
        case ACA_SMU_TYPE_CE:<br>
                bank->aca_err_type = ACA_BANK_ERR_CE_DE_DECODE(bank);<br>
--<br>
2.34.1<br>
<br>
</span></font></div>
</span></font></div>
</div>
</body>
</html>