drm/amdgpu: use the new cursor in amdgpu_ttm_bo_eviction_valuable
authorChristian König <christian.koenig@amd.com>
Wed, 17 Feb 2021 18:43:34 +0000 (19:43 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 24 Mar 2021 03:30:00 +0000 (23:30 -0400)
Separate the drm_mm_node walking from the actual handling.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Oak Zeng <Oak.Zeng@amd.com>
Tested-by: Nirmoy Das <nirmoy.das@amd.com>
Reviewed-by: Arunpravin <Arunpravin.PaneerSelvam@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

index 36ce6f7471e265009a5db016f972190647fa8237..b51d0100532f229b3d8ace0c50667cc9a6b8b889 100644 (file)
@@ -1398,7 +1398,7 @@ static bool amdgpu_ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,
                                            const struct ttm_place *place)
 {
        unsigned long num_pages = bo->mem.num_pages;
-       struct drm_mm_node *node = bo->mem.mm_node;
+       struct amdgpu_res_cursor cursor;
        struct dma_resv_list *flist;
        struct dma_fence *f;
        int i;
@@ -1430,13 +1430,15 @@ static bool amdgpu_ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,
 
        case TTM_PL_VRAM:
                /* Check each drm MM node individually */
-               while (num_pages) {
-                       if (place->fpfn < (node->start + node->size) &&
-                           !(place->lpfn && place->lpfn <= node->start))
+               amdgpu_res_first(&bo->mem, 0, (u64)num_pages << PAGE_SHIFT,
+                                &cursor);
+               while (cursor.remaining) {
+                       if (place->fpfn < PFN_DOWN(cursor.start + cursor.size)
+                           && !(place->lpfn &&
+                                place->lpfn <= PFN_DOWN(cursor.start)))
                                return true;
 
-                       num_pages -= node->size;
-                       ++node;
+                       amdgpu_res_next(&cursor, cursor.size);
                }
                return false;