BUG: kworker hangs the GPU on drm and i915 since 3.8.x under X11

George Amanakis g_amanakis at yahoo.com
Sat Apr 6 09:24:30 PDT 2013


Indeed, I set explicitly drm_kms_helper.poll=0 since 2.35.x. See here:
http://souriguha.wordpress.com/2011/03/08/how-to-solve-problem-with-thinkpadkslowd-kworker-on-linux-kernel-2-35-2-36/

Mouse and keyboard freezes intermittently some time after boot up. Actually the problem has to do with the GPU lagging and displaying the changes later. This results in an almost unusable desktop environment. Top 
will report the high CPU usage by 3-4 processes named kworker. With the drm_kms_helper.poll=0 it was until the 3.8.x kernel resolved.

Since the 3.8.x kernels the exact same problem appeared again. The problem persists with the latest 3.9-rc5 too. 
 
Thanks, George


________________________________
 From: Daniel Vetter <daniel.vetter at ffwll.ch>
To: George Amanakis <g_amanakis at yahoo.com> 
Cc: "alexander.deucher at amd.com" <alexander.deucher at amd.com>; "airlied at redhat.com" <airlied at redhat.com>; dri-devel <dri-devel at lists.freedesktop.org>; intel-gfx <intel-gfx at lists.freedesktop.org> 
Sent: Saturday, April 6, 2013 5:11 PM
Subject: Re: BUG: kworker hangs the GPU on drm and i915 since 3.8.x under X11
 
Indeed, the commit you've bisected too accidentally removed this
check. I'll submit a patch.So I guess you've explicitly set
drm_kms_helper.poll=0. Can you please elaborate what you're working
around with this option? Any such case is a bug.

Also, can you please test latest 3.9-rc kernels (without your patch,
i.e. a broken configuration)? It contains some rework to make hpd
detection less intrusive for normal desktop activity and should also
greatly help for your case here.

Thanks, Daniel


>
> diff -rupN a/drivers/gpu/drm/drm_crtc_helper.c
> b/drivers/gpu/drm/drm_crtc_helper.c
> --- a/drivers/gpu/drm/drm_crtc_helper.c    2013-02-19 00:58:34.000000000
> +0100
> +++ b/drivers/gpu/drm/drm_crtc_helper.c    2013-04-05 23:10:36.454936677
> +0200
> @@ -1067,7 +1067,7 @@ void drm_helper_hpd_irq_event(struct drm
>      enum drm_connector_status old_status;
>      bool changed = false;
>
> -    if (!dev->mode_config.poll_enabled)
> +    if (!dev->mode_config.poll_enabled || !drm_kms_helper_poll)
>          return;
>
>      mutex_lock(&dev->mode_config.mutex);
>



--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20130406/5fb4d304/attachment-0001.html>


More information about the dri-devel mailing list