diff options
| author | Alex Deucher <alexander.deucher@amd.com> | 2025-06-16 18:56:23 +0300 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2025-06-30 18:57:06 +0300 | 
| commit | d0c35c84dcfa66947b66ee7a5d8d2d7f52e9c1f3 (patch) | |
| tree | 71c3b04e936456e7d96b57ae4b374eb3b5e15c11 /drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | |
| parent | 1e9d17a5dcf1242e9518e461d8e63ad35240e49e (diff) | |
| download | linux-d0c35c84dcfa66947b66ee7a5d8d2d7f52e9c1f3.tar.xz | |
drm/amdgpu: remove job parameter from amdgpu_fence_emit()
What we actually care about is the amdgpu_fence object
so pass that in explicitly to avoid possible mistakes
in the future.
The job_run_counter handling can be safely removed at this
point as we no longer support job resubmission.
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_fence.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 34 | 
1 files changed, 13 insertions, 21 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index 57cbeb25d0f8..3d170060282e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c @@ -99,14 +99,14 @@ static u32 amdgpu_fence_read(struct amdgpu_ring *ring)   *   * @ring: ring the fence is associated with   * @f: resulting fence object - * @job: job the fence is embedded in + * @af: amdgpu fence input   * @flags: flags to pass into the subordinate .emit_fence() call   *   * Emits a fence command on the requested ring (all asics).   * Returns 0 on success, -ENOMEM on failure.   */ -int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f, struct amdgpu_job *job, -		      unsigned int flags) +int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f, +		      struct amdgpu_fence *af, unsigned int flags)  {  	struct amdgpu_device *adev = ring->adev;  	struct dma_fence *fence; @@ -115,36 +115,28 @@ int amdgpu_fence_emit(struct amdgpu_ring *ring, struct dma_fence **f, struct amd  	uint32_t seq;  	int r; -	if (job == NULL) { +	if (!af) {  		/* create a separate hw fence */  		am_fence = kzalloc(sizeof(*am_fence), GFP_KERNEL);  		if (!am_fence)  			return -ENOMEM;  	} else { -		/* take use of job-embedded fence */ -		am_fence = &job->hw_fence; +		am_fence = af;  	}  	fence = &am_fence->base;  	am_fence->ring = ring;  	seq = ++ring->fence_drv.sync_seq; -	if (job && job->job_run_counter) { -		/* reinit seq for resubmitted jobs */ -		fence->seqno = seq; -		/* TO be inline with external fence creation and other drivers */ +	if (af) { +		dma_fence_init(fence, &amdgpu_job_fence_ops, +			       &ring->fence_drv.lock, +			       adev->fence_context + ring->idx, seq); +		/* Against remove in amdgpu_job_{free, free_cb} */  		dma_fence_get(fence);  	} else { -		if (job) { -			dma_fence_init(fence, &amdgpu_job_fence_ops, -				       &ring->fence_drv.lock, -				       adev->fence_context + ring->idx, seq); -			/* Against remove in amdgpu_job_{free, free_cb} */ -			dma_fence_get(fence); -		} else { -			dma_fence_init(fence, &amdgpu_fence_ops, -				       &ring->fence_drv.lock, -				       adev->fence_context + ring->idx, seq); -		} +		dma_fence_init(fence, &amdgpu_fence_ops, +			       &ring->fence_drv.lock, +			       adev->fence_context + ring->idx, seq);  	}  	amdgpu_ring_emit_fence(ring, ring->fence_drv.gpu_addr, | 
