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

Christian König deathsimple at vodafone.de
Tue Nov 1 18:54:27 UTC 2016


Am 01.11.2016 um 16:27 schrieb Deucher, Alexander:
>> -----Original Message-----
>> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
>> Of Trigger Huang
>> Sent: Tuesday, November 01, 2016 3:22 AM
>> To: amd-gfx at lists.freedesktop.org
>> Cc: Yu, Xiangliang; Liu, Monk; Huang, Trigger
>> Subject: [PATCH] drm/amdgpu:no gpu scheduler for KIQ
>>
>> 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>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 4 ++++
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c  | 6 ++++--
>>   2 files changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>> index 77b34ec..c2a2d19 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
>> @@ -382,6 +382,10 @@ int amdgpu_fence_driver_init_ring(struct
>> amdgpu_ring *ring,
>>   	if (!ring->fence_drv.fences)
>>   		return -ENOMEM;
>>
>> +	/* Doesn't need gpu scheduler */
>> +	if (!num_hw_submission)
>> +		return 0;
>> +
> Rather than returning early here, I'd suggest wrapping the scheduler setup conditionally.  E.g.,
>
> if (num_hw_submission) {
>     /* setup scheduler */
>   ....
> }
>
> That way if we add anything else to that function, we don't accidently break KIQ.
>
> With that fixed:
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
>
> Alex
>
>>   	timeout = msecs_to_jiffies(amdgpu_lockup_timeout);
>>   	if (timeout == 0) {
>>   		/*
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
>> index 4c99282..a254c38 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
>> @@ -168,6 +168,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev,
>> struct amdgpu_ring *ring,
>>   		     unsigned irq_type)
>>   {
>>   	int r;
>> +	int entry_num = amdgpu_sched_hw_submission;

Additionally to Alex comment above please move the new local variable 
into the "if" where it is used.

With that fixed the patch is Reviewed-by: Christian König 
<christian.koenig at amd.com> as well.

Regards,
Christian.

>>
>>   	if (ring->adev == NULL) {
>>   		if (adev->num_rings >= AMDGPU_MAX_RINGS)
>> @@ -176,8 +177,9 @@ int amdgpu_ring_init(struct amdgpu_device *adev,
>> struct amdgpu_ring *ring,
>>   		ring->adev = adev;
>>   		ring->idx = adev->num_rings++;
>>   		adev->rings[ring->idx] = ring;
>> -		r = amdgpu_fence_driver_init_ring(ring,
>> -			amdgpu_sched_hw_submission);
>> +		if (ring->funcs->type == AMDGPU_RING_TYPE_KIQ)
>> +			entry_num = 0;
>> +		r = amdgpu_fence_driver_init_ring(ring, entry_num);
>>   		if (r)
>>   			return r;
>>   	}
>> --
>> 2.7.4
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx




More information about the amd-gfx mailing list