diff options
| author | Felix Kuehling <Felix.Kuehling@amd.com> | 2021-01-25 17:34:35 -0500 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2021-01-25 17:45:10 -0500 | 
| commit | eda1068dc995fbc87eee04496a3414372a8ef63d (patch) | |
| tree | b46500b50e58e297b6b9d42c7c0683b36c688279 /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
| parent | dcb820d185f50d34d0b8ca21230d8d57e0aca7cc (diff) | |
drm/amdgpu: Make contiguous pinning optional
Enable pinning of VRAM without forcing it to be contiguous. When memory is
already pinned, make sure it's contiguous if requested.
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 6cc9919b12cc..52f98e370a87 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -911,10 +911,15 @@ 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 ((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 +935,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 +987,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);  } | 
