[PATCH 3/4] drm/amdgpu: earlier free SA resources
zhoucm1
david1.zhou at amd.com
Thu Jun 30 09:21:52 UTC 2016
On 2016年06月30日 16:53, Christian König wrote:
> From: Christian König <christian.koenig at amd.com>
>
> Keep the time we don't have a fence associated with the resource smaller.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
I see why you move job->fence and sync to another place.
Reviewed-by: Chunming Zhou <david1.zhou at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 4 ++--
> 3 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 0f18c67..24faa79 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -761,6 +761,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,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index 9f148ba..8d4fe8a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -850,6 +850,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);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> index 347962e..cdcfda6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
> @@ -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;
> }
>
More information about the amd-gfx
mailing list