summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
diff options
context:
space:
mode:
authorTao Zhou <tao.zhou1@amd.com>2025-08-27 19:33:02 +0800
committerAlex Deucher <alexander.deucher@amd.com>2025-11-11 21:54:14 -0500
commit334b27bf712b5ddd19908aba318175e4b9bcf839 (patch)
treec54dc40782c0271cb657b1fb5c7b70628eed4847 /drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
parentec49374ccb8da86b465beaf09c367f3dfd648d8f (diff)
drm/amdgpu: try for more times if RAS bad page number is not updated
RAS info update in PMFW is time cost, wait for it. 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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
index ec248ca6ef93..01b38a6e198e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c
@@ -874,13 +874,33 @@ Out:
int amdgpu_ras_eeprom_update_record_num(struct amdgpu_ras_eeprom_control *control)
{
struct amdgpu_device *adev = to_amdgpu_device(control);
+ int ret, timeout = 1000;
if (!amdgpu_ras_smu_eeprom_supported(adev))
return 0;
control->ras_num_recs_old = control->ras_num_recs;
- return amdgpu_ras_smu_get_badpage_count(adev,
+
+ do {
+ ret = amdgpu_ras_smu_get_badpage_count(adev,
&(control->ras_num_recs), 12);
+ if (!ret &&
+ (control->ras_num_recs_old == control->ras_num_recs)) {
+ /* record number update in PMFW needs some time */
+ msleep(50);
+ timeout -= 50;
+ } else {
+ break;
+ }
+ } while (timeout);
+
+ /* no update of record number is not a real failure,
+ * don't print warning here
+ */
+ if (!ret && (control->ras_num_recs_old == control->ras_num_recs))
+ ret = -EINVAL;
+
+ return ret;
}
/**