Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73cfa5f5 authored by Monk Liu's avatar Monk Liu Committed by Alex Deucher
Browse files

drm/amdgpu: move ib.fence to job.fence

parent cc55c45d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+3 −3
Original line number Diff line number Diff line
@@ -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;
+3 −2
Original line number Diff line number Diff line
@@ -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;
}
+1 −0
Original line number Diff line number Diff line
@@ -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;

+2 −0
Original line number Diff line number Diff line
@@ -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;

Loading