]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
Merge tag 'amd-drm-next-5.14-2021-05-21' of https://gitlab.freedesktop.org/agd5f...
[mirror_ubuntu-jammy-kernel.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_object.h
index 46d22ab85492cec79ab4670078add98171e8a51b..a44779d3e0a7cde6ea63707c296e4c6c728f6048 100644 (file)
@@ -30,6 +30,8 @@
 
 #include <drm/amdgpu_drm.h>
 #include "amdgpu.h"
+#include "amdgpu_res_cursor.h"
+
 #ifdef CONFIG_MMU_NOTIFIER
 #include <linux/mmu_notifier.h>
 #endif
@@ -215,18 +217,19 @@ static inline u64 amdgpu_bo_mmap_offset(struct amdgpu_bo *bo)
 static inline bool amdgpu_bo_in_cpu_visible_vram(struct amdgpu_bo *bo)
 {
        struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
-       unsigned fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
-       struct drm_mm_node *node = bo->tbo.mem.mm_node;
-       unsigned long pages_left;
+       struct amdgpu_res_cursor cursor;
 
        if (bo->tbo.mem.mem_type != TTM_PL_VRAM)
                return false;
 
-       for (pages_left = bo->tbo.mem.num_pages; pages_left;
-            pages_left -= node->size, node++)
-               if (node->start < fpfn)
+       amdgpu_res_first(&bo->tbo.mem, 0, amdgpu_bo_size(bo), &cursor);
+       while (cursor.remaining) {
+               if (cursor.start < adev->gmc.visible_vram_size)
                        return true;
 
+               amdgpu_res_next(&cursor, cursor.size);
+       }
+
        return false;
 }