diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 25 | 
1 files changed, 11 insertions, 14 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 5ca905b4a0fb..a52a084158b1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -795,29 +795,23 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)  	if (r)  		return r; -	r = amdgpu_sync_fence(adev, &p->job->sync, -			      fpriv->prt_va->last_pt_update, false); +	r = amdgpu_sync_vm_fence(&p->job->sync, fpriv->prt_va->last_pt_update);  	if (r)  		return r;  	if (amdgpu_mcbp || amdgpu_sriov_vf(adev)) { -		struct dma_fence *f; -  		bo_va = fpriv->csa_va;  		BUG_ON(!bo_va);  		r = amdgpu_vm_bo_update(adev, bo_va, false);  		if (r)  			return r; -		f = bo_va->last_pt_update; -		r = amdgpu_sync_fence(adev, &p->job->sync, f, false); +		r = amdgpu_sync_vm_fence(&p->job->sync, bo_va->last_pt_update);  		if (r)  			return r;  	}  	amdgpu_bo_list_for_each_entry(e, p->bo_list) { -		struct dma_fence *f; -  		/* ignore duplicates */  		bo = ttm_to_amdgpu_bo(e->tv.bo);  		if (!bo) @@ -831,8 +825,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)  		if (r)  			return r; -		f = bo_va->last_pt_update; -		r = amdgpu_sync_fence(adev, &p->job->sync, f, false); +		r = amdgpu_sync_vm_fence(&p->job->sync, bo_va->last_pt_update);  		if (r)  			return r;  	} @@ -845,7 +838,7 @@ static int amdgpu_cs_vm_handling(struct amdgpu_cs_parser *p)  	if (r)  		return r; -	r = amdgpu_sync_fence(adev, &p->job->sync, vm->last_update, false); +	r = amdgpu_sync_vm_fence(&p->job->sync, vm->last_update);  	if (r)  		return r; @@ -916,6 +909,11 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,  		if (parser->entity && parser->entity != entity)  			return -EINVAL; +		/* Return if there is no run queue associated with this entity. +		 * Possibly because of disabled HW IP*/ +		if (entity->rq == NULL) +			return -EINVAL; +  		parser->entity = entity;  		ring = to_amdgpu_ring(entity->rq->sched); @@ -987,7 +985,7 @@ static int amdgpu_cs_process_fence_dep(struct amdgpu_cs_parser *p,  			dma_fence_put(old);  		} -		r = amdgpu_sync_fence(p->adev, &p->job->sync, fence, true); +		r = amdgpu_sync_fence(&p->job->sync, fence, true);  		dma_fence_put(fence);  		if (r)  			return r; @@ -1009,7 +1007,7 @@ static int amdgpu_syncobj_lookup_and_add_to_sync(struct amdgpu_cs_parser *p,  		return r;  	} -	r = amdgpu_sync_fence(p->adev, &p->job->sync, fence, true); +	r = amdgpu_sync_fence(&p->job->sync, fence, true);  	dma_fence_put(fence);  	return r; @@ -1236,7 +1234,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,  		goto error_abort;  	} -	job->owner = p->filp;  	p->fence = dma_fence_get(&job->base.s_fence->finished);  	amdgpu_ctx_add_fence(p->ctx, entity, p->fence, &seq); |