diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 15 | 
1 files changed, 9 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h index e0ec48d6a3fd..1cebe24cca71 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h @@ -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;  } | 
