]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: clear bad page info of ras module
authorJinzhou Su <jinzhou.su@amd.com>
Wed, 15 Oct 2025 01:39:44 +0000 (09:39 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 28 Oct 2025 13:47:33 +0000 (09:47 -0400)
Clear bad page info of ras module.

Signed-off-by: Jinzhou Su <jinzhou.su@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

index ff34e1c0d9e2c45432f75653be4f6d7eef4a8d86..b22ce0a567f2c2eca025c13690f65494850be3b3 100644 (file)
@@ -612,6 +612,8 @@ static ssize_t amdgpu_ras_debugfs_ctrl_write(struct file *f,
        return size;
 }
 
+static int amdgpu_uniras_clear_badpages_info(struct amdgpu_device *adev);
+
 /**
  * DOC: AMDGPU RAS debugfs EEPROM table reset interface
  *
@@ -636,6 +638,11 @@ static ssize_t amdgpu_ras_debugfs_eeprom_write(struct file *f,
                (struct amdgpu_device *)file_inode(f)->i_private;
        int ret;
 
+       if (amdgpu_uniras_enabled(adev)) {
+               ret = amdgpu_uniras_clear_badpages_info(adev);
+               return ret ? ret : size;
+       }
+
        ret = amdgpu_ras_eeprom_reset_table(
                &(amdgpu_ras_get_context(adev)->eeprom_control));
 
@@ -1543,6 +1550,21 @@ out_fini_err_data:
        return ret;
 }
 
+static int amdgpu_uniras_clear_badpages_info(struct amdgpu_device *adev)
+{
+       struct ras_cmd_dev_handle req = {0};
+       int ret;
+
+       ret = amdgpu_ras_mgr_handle_ras_cmd(adev, RAS_CMD__CLEAR_BAD_PAGE_INFO,
+                               &req, sizeof(req), NULL, 0);
+       if (ret) {
+               dev_err(adev->dev, "Failed to clear bad pages info, ret: %d\n", ret);
+               return ret;
+       }
+
+       return 0;
+}
+
 static int amdgpu_uniras_query_block_ecc(struct amdgpu_device *adev,
                        struct ras_query_if *info)
 {