drm/amdgpu: move ib.fence to job.fence
Signed-off-by: Monk Liu <Monk.Liu@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
cc55c45db5
commit
73cfa5f5ce
|
@ -762,7 +762,6 @@ struct amdgpu_ib {
|
|||
uint32_t length_dw;
|
||||
uint64_t gpu_addr;
|
||||
uint32_t *ptr;
|
||||
struct fence *fence;
|
||||
struct amdgpu_user_fence *user;
|
||||
struct amdgpu_vm *vm;
|
||||
unsigned vm_id;
|
||||
|
@ -1240,6 +1239,7 @@ struct amdgpu_job {
|
|||
struct amdgpu_ring *ring;
|
||||
struct amdgpu_sync sync;
|
||||
struct amdgpu_ib *ibs;
|
||||
struct fence *fence; /* the hw fence */
|
||||
uint32_t num_ibs;
|
||||
void *owner;
|
||||
struct amdgpu_user_fence uf;
|
||||
|
|
|
@ -92,7 +92,6 @@ int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
|
|||
void amdgpu_ib_free(struct amdgpu_device *adev, struct amdgpu_ib *ib, struct fence *f)
|
||||
{
|
||||
amdgpu_sa_bo_free(adev, &ib->sa_bo, f);
|
||||
fence_put(ib->fence);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -124,6 +123,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
|
|||
struct amdgpu_ib *ib = &ibs[0];
|
||||
struct amdgpu_ctx *ctx, *old_ctx;
|
||||
struct amdgpu_vm *vm;
|
||||
struct fence *hwf;
|
||||
unsigned i;
|
||||
int r = 0;
|
||||
|
||||
|
@ -180,7 +180,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
|
|||
amdgpu_ring_emit_hdp_invalidate(ring);
|
||||
}
|
||||
|
||||
r = amdgpu_fence_emit(ring, &ib->fence);
|
||||
r = amdgpu_fence_emit(ring, &hwf);
|
||||
if (r) {
|
||||
dev_err(adev->dev, "failed to emit fence (%d)\n", r);
|
||||
ring->current_ctx = old_ctx;
|
||||
|
@ -199,7 +199,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
|
|||
}
|
||||
|
||||
if (f)
|
||||
*f = fence_get(ib->fence);
|
||||
*f = fence_get(hwf);
|
||||
|
||||
amdgpu_ring_commit(ring);
|
||||
return 0;
|
||||
|
|
|
@ -72,8 +72,8 @@ void amdgpu_job_free(struct amdgpu_job *job)
|
|||
unsigned i;
|
||||
|
||||
for (i = 0; i < job->num_ibs; ++i)
|
||||
amdgpu_sa_bo_free(job->adev, &job->ibs[i].sa_bo, job->ibs[job->num_ibs - 1].fence);
|
||||
fence_put(job->ibs[job->num_ibs - 1].fence);
|
||||
amdgpu_sa_bo_free(job->adev, &job->ibs[i].sa_bo, job->fence);
|
||||
fence_put(job->fence);
|
||||
|
||||
amdgpu_bo_unref(&job->uf.bo);
|
||||
amdgpu_sync_free(&job->sync);
|
||||
|
@ -157,6 +157,7 @@ static struct fence *amdgpu_job_run(struct amd_sched_job *sched_job)
|
|||
}
|
||||
|
||||
err:
|
||||
job->fence = fence;
|
||||
amdgpu_job_free(job);
|
||||
return fence;
|
||||
}
|
||||
|
|
|
@ -880,6 +880,7 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring, struct amdgpu_bo *bo,
|
|||
|
||||
if (direct) {
|
||||
r = amdgpu_ib_schedule(ring, 1, ib, NULL, &f);
|
||||
job->fence = f;
|
||||
if (r)
|
||||
goto err_free;
|
||||
|
||||
|
|
|
@ -426,6 +426,7 @@ int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
|
|||
ib->ptr[i] = 0x0;
|
||||
|
||||
r = amdgpu_ib_schedule(ring, 1, ib, NULL, &f);
|
||||
job->fence = f;
|
||||
if (r)
|
||||
goto err;
|
||||
|
||||
|
@ -487,6 +488,7 @@ int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
|
|||
|
||||
if (direct) {
|
||||
r = amdgpu_ib_schedule(ring, 1, ib, NULL, &f);
|
||||
job->fence = f;
|
||||
if (r)
|
||||
goto err;
|
||||
|
||||
|
|
|
@ -670,6 +670,7 @@ static int cik_sdma_ring_test_ib(struct amdgpu_ring *ring)
|
|||
err1:
|
||||
fence_put(f);
|
||||
amdgpu_ib_free(adev, &ib, NULL);
|
||||
fence_put(f);
|
||||
err0:
|
||||
amdgpu_wb_free(adev, index);
|
||||
return r;
|
||||
|
|
|
@ -2164,6 +2164,7 @@ static int gfx_v7_0_ring_test_ib(struct amdgpu_ring *ring)
|
|||
err2:
|
||||
fence_put(f);
|
||||
amdgpu_ib_free(adev, &ib, NULL);
|
||||
fence_put(f);
|
||||
err1:
|
||||
amdgpu_gfx_scratch_free(adev, scratch);
|
||||
return r;
|
||||
|
|
|
@ -733,6 +733,7 @@ static int gfx_v8_0_ring_test_ib(struct amdgpu_ring *ring)
|
|||
err2:
|
||||
fence_put(f);
|
||||
amdgpu_ib_free(adev, &ib, NULL);
|
||||
fence_put(f);
|
||||
err1:
|
||||
amdgpu_gfx_scratch_free(adev, scratch);
|
||||
return r;
|
||||
|
@ -1290,6 +1291,7 @@ static int gfx_v8_0_do_edc_gpr_workarounds(struct amdgpu_device *adev)
|
|||
fail:
|
||||
fence_put(f);
|
||||
amdgpu_ib_free(adev, &ib, NULL);
|
||||
fence_put(f);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -728,6 +728,7 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring)
|
|||
err1:
|
||||
fence_put(f);
|
||||
amdgpu_ib_free(adev, &ib, NULL);
|
||||
fence_put(f);
|
||||
err0:
|
||||
amdgpu_wb_free(adev, index);
|
||||
return r;
|
||||
|
|
|
@ -879,6 +879,7 @@ static int sdma_v3_0_ring_test_ib(struct amdgpu_ring *ring)
|
|||
err1:
|
||||
fence_put(f);
|
||||
amdgpu_ib_free(adev, &ib, NULL);
|
||||
fence_put(f);
|
||||
err0:
|
||||
amdgpu_wb_free(adev, index);
|
||||
return r;
|
||||
|
|
Loading…
Reference in New Issue