[PATCH v2] drm/amdgpu:no gpu scheduler for KIQ

Christian König deathsimple at vodafone.de
Wed Nov 2 12:24:17 UTC 2016


Am 02.11.2016 um 12:48 schrieb Trigger Huang:
> KIQ is used for interaction between driver and
> CP, and not exposed to outside client, as such it
> doesn't need to be handled by GPU scheduler.
>
> Signed-off-by: Monk Liu <Monk.Liu at amd.com>
> Signed-off-by: Xiangliang Yu <Xiangliang.Yu at amd.com>
> Signed-off-by: Trigger Huang <trigger.huang at amd.com>

Even if you only fix a small mistake it is usually good practice to 
increase the version number of the patch, e.g. you would use v3 in this 
case and write a one liner what was wrong in the commit message.

But that's only a nit pick, so patch is Reviewed-by: Christian König 
<christian.koenig at amd.com> anyway.

Regards,
Christian.

>
> Changes in v2:
>   - According to Alex's suggestion, wrapping the scheduler setup
>     conditionally instead of returning early.
>   - Use another simple method to check if is a KIQ ring.
>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 39 +++++++++++++++++--------------
>   1 file changed, 21 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> index 77b34ec..5772ef2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
> @@ -382,24 +382,27 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
>   	if (!ring->fence_drv.fences)
>   		return -ENOMEM;
>   
> -	timeout = msecs_to_jiffies(amdgpu_lockup_timeout);
> -	if (timeout == 0) {
> -		/*
> -		 * FIXME:
> -		 * Delayed workqueue cannot use it directly,
> -		 * so the scheduler will not use delayed workqueue if
> -		 * MAX_SCHEDULE_TIMEOUT is set.
> -		 * Currently keep it simple and silly.
> -		 */
> -		timeout = MAX_SCHEDULE_TIMEOUT;
> -	}
> -	r = amd_sched_init(&ring->sched, &amdgpu_sched_ops,
> -			   num_hw_submission,
> -			   timeout, ring->name);
> -	if (r) {
> -		DRM_ERROR("Failed to create scheduler on ring %s.\n",
> -			  ring->name);
> -		return r;
> +	/* No need to setup the GPU scheduler for KIQ ring */
> +	if (ring->funcs->type != AMDGPU_RING_TYPE_KIQ) {
> +		timeout = msecs_to_jiffies(amdgpu_lockup_timeout);
> +		if (timeout == 0) {
> +			/*
> +			 * FIXME:
> +			 * Delayed workqueue cannot use it directly,
> +			 * so the scheduler will not use delayed workqueue if
> +			 * MAX_SCHEDULE_TIMEOUT is set.
> +			 * Currently keep it simple and silly.
> +			 */
> +			timeout = MAX_SCHEDULE_TIMEOUT;
> +		}
> +		r = amd_sched_init(&ring->sched, &amdgpu_sched_ops,
> +				   num_hw_submission,
> +				   timeout, ring->name);
> +		if (r) {
> +			DRM_ERROR("Failed to create scheduler on ring %s.\n",
> +				  ring->name);
> +			return r;
> +		}
>   	}
>   
>   	return 0;




More information about the amd-gfx mailing list