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

Commit a5fb4ec2 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: earlier free SA resources



Keep the time we don't have a fence associated with the resource smaller.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarChunming Zhou <david1.zhou@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a79a5bdc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -760,6 +760,7 @@ int amdgpu_job_alloc(struct amdgpu_device *adev, unsigned num_ibs,
int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size,
			     struct amdgpu_job **job);

void amdgpu_job_free_resources(struct amdgpu_job *job);
void amdgpu_job_free(struct amdgpu_job *job);
int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,
		      struct amd_sched_entity *entity, void *owner,
+1 −0
Original line number Diff line number Diff line
@@ -855,6 +855,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
	p->fence = fence_get(fence);
	cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring, fence);
	job->uf_sequence = cs->out.handle;
	amdgpu_job_free_resources(job);

	trace_amdgpu_cs_ioctl(job);
	amd_sched_entity_push_job(&job->base);
+2 −2
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size,
	return r;
}

static void amdgpu_job_free_resources(struct amdgpu_job *job)
void amdgpu_job_free_resources(struct amdgpu_job *job)
{
	struct fence *f;
	unsigned i;
@@ -127,6 +127,7 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,
	job->owner = owner;
	job->ctx = entity->fence_context;
	*f = fence_get(fence);
	amdgpu_job_free_resources(job);
	amd_sched_entity_push_job(&job->base);

	return 0;
@@ -179,7 +180,6 @@ static struct fence *amdgpu_job_run(struct amd_sched_job *sched_job)

err:
	job->fence = fence;
	amdgpu_job_free_resources(job);
	return fence;
}