]> www.infradead.org Git - users/willy/xarray.git/commitdiff
drm/amdgpu: add critical address check for bad page retirement
authorYiPeng Chai <YiPeng.Chai@amd.com>
Tue, 22 Jul 2025 06:17:29 +0000 (14:17 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 28 Jul 2025 20:40:07 +0000 (16:40 -0400)
Add critical address check for bad page retirement.

Signed-off-by: YiPeng Chai <YiPeng.Chai@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

index b75a0dc22acec0ea0d28766502a7378f74e0b184..1e31ef5592f2249da7d5eeb15653fec09414407f 100644 (file)
@@ -2637,6 +2637,11 @@ static int amdgpu_ras_badpages_read(struct amdgpu_device *adev,
                        .size = AMDGPU_GPU_PAGE_SIZE,
                        .flags = AMDGPU_RAS_RETIRE_PAGE_RESERVED,
                };
+
+               if (amdgpu_ras_check_critical_address(adev,
+                       data->bps[i].retired_page << AMDGPU_GPU_PAGE_SHIFT))
+                       continue;
+
                status = amdgpu_vram_mgr_query_page_status(&adev->mman.vram_mgr,
                                data->bps[i].retired_page << AMDGPU_GPU_PAGE_SHIFT);
                if (status == -EBUSY)
@@ -5356,6 +5361,9 @@ int amdgpu_ras_reserve_page(struct amdgpu_device *adev, uint64_t pfn)
        uint64_t start = pfn << AMDGPU_GPU_PAGE_SHIFT;
        int ret = 0;
 
+       if (amdgpu_ras_check_critical_address(adev, start))
+               return 0;
+
        mutex_lock(&con->page_rsv_lock);
        ret = amdgpu_vram_mgr_query_page_status(mgr, start);
        if (ret == -ENOENT)