[PATCH 3/4] drm/amdgpu: earlier free SA resources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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;
>   }
>   



[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux