* [PATCH] drm/amdgpu:no gpu scheduler for KIQ
@ 2016-11-01 7:21 Trigger Huang
[not found] ` <1477984900-10244-1-git-send-email-trigger.huang-5C7GfCeVMHo@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Trigger Huang @ 2016-11-01 7:21 UTC (permalink / raw)
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
Cc: Xiangliang.Yu-5C7GfCeVMHo, Monk Liu, 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@amd.com>
Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
Signed-off-by: Trigger Huang <trigger.huang@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;
+
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;
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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] drm/amdgpu:no gpu scheduler for KIQ
[not found] ` <1477984900-10244-1-git-send-email-trigger.huang-5C7GfCeVMHo@public.gmane.org>
@ 2016-11-01 15:27 ` Deucher, Alexander
[not found] ` <MWHPR12MB1694199CDBFE65B2668F2F52F7A10-Gy0DoCVfaSW4WA4dJ5YXGAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Deucher, Alexander @ 2016-11-01 15:27 UTC (permalink / raw)
To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Yu, Xiangliang, Liu, Monk, Huang, Trigger
> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org] On Behalf
> Of Trigger Huang
> Sent: Tuesday, November 01, 2016 3:22 AM
> To: amd-gfx@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@amd.com>
> Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
> Signed-off-by: Trigger Huang <trigger.huang@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@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;
>
> 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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] drm/amdgpu:no gpu scheduler for KIQ
[not found] ` <MWHPR12MB1694199CDBFE65B2668F2F52F7A10-Gy0DoCVfaSW4WA4dJ5YXGAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
@ 2016-11-01 18:54 ` Christian König
0 siblings, 0 replies; 3+ messages in thread
From: Christian König @ 2016-11-01 18:54 UTC (permalink / raw)
To: Deucher, Alexander, Huang, Trigger,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Cc: Yu, Xiangliang, Liu, Monk
Am 01.11.2016 um 16:27 schrieb Deucher, Alexander:
>> -----Original Message-----
>> From: amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org] On Behalf
>> Of Trigger Huang
>> Sent: Tuesday, November 01, 2016 3:22 AM
>> To: amd-gfx@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@amd.com>
>> Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
>> Signed-off-by: Trigger Huang <trigger.huang@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@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@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@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-11-01 18:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-01 7:21 [PATCH] drm/amdgpu:no gpu scheduler for KIQ Trigger Huang
[not found] ` <1477984900-10244-1-git-send-email-trigger.huang-5C7GfCeVMHo@public.gmane.org>
2016-11-01 15:27 ` Deucher, Alexander
[not found] ` <MWHPR12MB1694199CDBFE65B2668F2F52F7A10-Gy0DoCVfaSW4WA4dJ5YXGAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-11-01 18:54 ` Christian König
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).