[PATCH] radeon: Use only a single work queue thread for crt

Christian König ckoenig.leichtzumerken at gmail.com
Mon Sep 7 08:25:58 UTC 2020


Am 06.09.20 um 18:02 schrieb Jan Vesely:
>
>
> On Sun, Sep 6, 2020 at 4:54 AM Christian König 
> <ckoenig.leichtzumerken at gmail.com 
> <mailto:ckoenig.leichtzumerken at gmail.com>> wrote:
>
>     Am 03.08.19 um 02:09 schrieb Andi Kleen:
>     > From: Andi Kleen <ak at linux.intel.com <mailto:ak at linux.intel.com>>
>     >
>     > I got tired of seeing a lot of radeon-crt kernel threads in ps on my
>     > workstation, one for each CPU and one for each display, which
>     never use any CPU time.
>     > Surely a single kernel thread is enough to handle the display.
>
>     NAK, radeon blocks inside the kernel thread and those need to run in
>     parallel or otherwise the hardware can hang.
>
>
> Shouldn't WQ_UNBOUND create a new worker thread whenever all current 
> workers go to sleep/block (and the total number of worker threads is 
> below 'max_active') ?

If that is guaranteed then this is indeed sufficient, but the sentence 
"Surely a single kernel thread is enough to handle the display." sounded 
like it creates only a single one.

Christian.

>
> Jan
>
>
>     Christian.
>
>     >
>     > Signed-off-by: Andi Kleen <ak at linux.intel.com
>     <mailto:ak at linux.intel.com>>
>     > ---
>     >   drivers/gpu/drm/radeon/radeon_display.c | 2 +-
>     >   1 file changed, 1 insertion(+), 1 deletion(-)
>     >
>     > diff --git a/drivers/gpu/drm/radeon/radeon_display.c
>     b/drivers/gpu/drm/radeon/radeon_display.c
>     > index bd52f15e6330..fb0ca688f6fe 100644
>     > --- a/drivers/gpu/drm/radeon/radeon_display.c
>     > +++ b/drivers/gpu/drm/radeon/radeon_display.c
>     > @@ -682,7 +682,7 @@ static void radeon_crtc_init(struct
>     drm_device *dev, int index)
>     >
>     >  drm_mode_crtc_set_gamma_size(&radeon_crtc->base, 256);
>     >       radeon_crtc->crtc_id = index;
>     > -     radeon_crtc->flip_queue = alloc_workqueue("radeon-crtc",
>     WQ_HIGHPRI, 0);
>     > +     radeon_crtc->flip_queue = alloc_workqueue("radeon-crtc",
>     WQ_HIGHPRI|WQ_UNBOUND, 0);
>     >       rdev->mode_info.crtcs[index] = radeon_crtc;
>     >
>     >       if (rdev->family >= CHIP_BONAIRE) {
>
>     _______________________________________________
>     amd-gfx mailing list
>     amd-gfx at lists.freedesktop.org <mailto: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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20200907/fa9b8f44/attachment-0001.htm>


More information about the amd-gfx mailing list