drm/amdgpu: earlier free SA resources
Keep the time we don't have a fence associated with the resource smaller. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
a79a5bdcef
commit
a5fb4ec29c
@@ -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,
|
int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size,
|
||||||
struct amdgpu_job **job);
|
struct amdgpu_job **job);
|
||||||
|
|
||||||
|
void amdgpu_job_free_resources(struct amdgpu_job *job);
|
||||||
void amdgpu_job_free(struct amdgpu_job *job);
|
void amdgpu_job_free(struct amdgpu_job *job);
|
||||||
int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,
|
int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,
|
||||||
struct amd_sched_entity *entity, void *owner,
|
struct amd_sched_entity *entity, void *owner,
|
||||||
|
|||||||
@@ -855,6 +855,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
|
|||||||
p->fence = fence_get(fence);
|
p->fence = fence_get(fence);
|
||||||
cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring, fence);
|
cs->out.handle = amdgpu_ctx_add_fence(p->ctx, ring, fence);
|
||||||
job->uf_sequence = cs->out.handle;
|
job->uf_sequence = cs->out.handle;
|
||||||
|
amdgpu_job_free_resources(job);
|
||||||
|
|
||||||
trace_amdgpu_cs_ioctl(job);
|
trace_amdgpu_cs_ioctl(job);
|
||||||
amd_sched_entity_push_job(&job->base);
|
amd_sched_entity_push_job(&job->base);
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size,
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void amdgpu_job_free_resources(struct amdgpu_job *job)
|
void amdgpu_job_free_resources(struct amdgpu_job *job)
|
||||||
{
|
{
|
||||||
struct fence *f;
|
struct fence *f;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
@@ -127,6 +127,7 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring,
|
|||||||
job->owner = owner;
|
job->owner = owner;
|
||||||
job->ctx = entity->fence_context;
|
job->ctx = entity->fence_context;
|
||||||
*f = fence_get(fence);
|
*f = fence_get(fence);
|
||||||
|
amdgpu_job_free_resources(job);
|
||||||
amd_sched_entity_push_job(&job->base);
|
amd_sched_entity_push_job(&job->base);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -179,7 +180,6 @@ static struct fence *amdgpu_job_run(struct amd_sched_job *sched_job)
|
|||||||
|
|
||||||
err:
|
err:
|
||||||
job->fence = fence;
|
job->fence = fence;
|
||||||
amdgpu_job_free_resources(job);
|
|
||||||
return fence;
|
return fence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user