diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index b4c8e5d5c763..4b29b8205442 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -787,7 +787,7 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)  	if (r < 0)  		return r; -	r = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.num_pages, &bo->kmap); +	r = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.mem.num_pages, &bo->kmap);  	if (r)  		return r; @@ -911,10 +911,16 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,  	if (bo->tbo.pin_count) {  		uint32_t mem_type = bo->tbo.mem.mem_type; +		uint32_t mem_flags = bo->tbo.mem.placement;  		if (!(domain & amdgpu_mem_type_to_domain(mem_type)))  			return -EINVAL; +		if ((mem_type == TTM_PL_VRAM) && +		    (bo->flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS) && +		    !(mem_flags & TTM_PL_FLAG_CONTIGUOUS)) +			return -EINVAL; +  		ttm_bo_pin(&bo->tbo);  		if (max_offset != 0) { @@ -930,7 +936,6 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,  	if (bo->tbo.base.import_attach)  		dma_buf_pin(bo->tbo.base.import_attach); -	bo->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;  	/* force to pin into visible video ram */  	if (!(bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS))  		bo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED; @@ -983,6 +988,7 @@ error:   */  int amdgpu_bo_pin(struct amdgpu_bo *bo, u32 domain)  { +	bo->flags |= AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;  	return amdgpu_bo_pin_restricted(bo, domain, 0, 0);  }  | 
