diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 21 | 
1 files changed, 9 insertions, 12 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index dd6693fff280..e92ecabfa7bd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -612,9 +612,8 @@ int amdgpu_bo_create(struct amdgpu_device *adev,  		if (unlikely(r))  			goto fail_unreserve; -		amdgpu_bo_fence(bo, fence, false); -		dma_fence_put(bo->tbo.moving); -		bo->tbo.moving = dma_fence_get(fence); +		dma_resv_add_fence(bo->tbo.base.resv, fence, +				   DMA_RESV_USAGE_KERNEL);  		dma_fence_put(fence);  	}  	if (!bp->resv) @@ -761,6 +760,11 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)  	if (bo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)  		return -EPERM; +	r = dma_resv_wait_timeout(bo->tbo.base.resv, DMA_RESV_USAGE_KERNEL, +				  false, MAX_SCHEDULE_TIMEOUT); +	if (r < 0) +		return r; +  	kptr = amdgpu_bo_kptr(bo);  	if (kptr) {  		if (ptr) @@ -768,11 +772,6 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr)  		return 0;  	} -	r = dma_resv_wait_timeout(bo->tbo.base.resv, false, false, -				  MAX_SCHEDULE_TIMEOUT); -	if (r < 0) -		return r; -  	r = ttm_bo_kmap(&bo->tbo, 0, bo->tbo.resource->num_pages, &bo->kmap);  	if (r)  		return r; @@ -1399,10 +1398,8 @@ void amdgpu_bo_fence(struct amdgpu_bo *bo, struct dma_fence *fence,  		return;  	} -	if (shared) -		dma_resv_add_shared_fence(resv, fence); -	else -		dma_resv_add_excl_fence(resv, fence); +	dma_resv_add_fence(resv, fence, shared ? DMA_RESV_USAGE_READ : +			   DMA_RESV_USAGE_WRITE);  }  /** | 
