> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Trigger Huang > Sent: Wednesday, November 02, 2016 7:48 AM > To: amd-gfx at lists.freedesktop.org > Cc: Yu, Xiangliang; Liu, Monk; Huang, Trigger > Subject: [PATCH v2] 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> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > > 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; > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx