diff mbox

drm/i915: Sync the hotplug work when device suspending

Message ID 1374946982.28551.4.camel@cliu38-desktop-build (mailing list archive)
State New, archived
Headers show

Commit Message

Chuansheng Liu July 27, 2013, 5:43 p.m. UTC
It is possible that during i915 device suspending with one pending
hotplug work, one of cases is the device resume/suspend quickly.

At this case, the hotplug work will be executed even after device
is OFF, in Intel Android platform, it will cause system hang.

Here we need sync the hotplug work in function i915_drm_freeze().

Signed-off-by: Liu, Chuansheng <chuansheng.liu@intel.com>
Signed-off-by: Li Fei <fei.li@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

Chuansheng Liu July 27, 2013, 10:10 a.m. UTC | #1
> -----Original Message-----
> From: Chris Wilson [mailto:chris@chris-wilson.co.uk]
> Sent: Saturday, July 27, 2013 5:40 PM
> To: Liu, Chuansheng
> Cc: daniel.vetter@ffwll.ch; airlied@linux.ie; intel-gfx@lists.freedesktop.org; Li,
> Fei; dri-devel@lists.freedesktop.org
> Subject: Re: [Intel-gfx] [PATCH] drm/i915: Sync the hotplug work when device
> suspending
> 
> On Sun, Jul 28, 2013 at 01:43:02AM +0800, Chuansheng Liu wrote:
> >
> > It is possible that during i915 device suspending with one pending
> > hotplug work, one of cases is the device resume/suspend quickly.
> >
> > At this case, the hotplug work will be executed even after device
> > is OFF, in Intel Android platform, it will cause system hang.
> 
> See
> 
>   1343070574-23917-1-git-send-email-chris@chris-wilson.co.uk
>   http://lists.freedesktop.org/archives/intel-gfx/2012-July/019144.html
Sorry to not know this thread before, and it seems it did not be included into upstream.
Moreover, in current upstream code the rps_work has been synced in intel_disable_gt_powersave().

So, is it possible to consider my patch based on current upstream code? Thanks.

> 
> which is in response to the bug raised here
> 
>   s5hlilr4s9h.wl%tiwai@suse.de
>   http://lists.freedesktop.org/archives/intel-gfx/2012-April/016738.html
> -Chris
> 
> --
> Chris Wilson, Intel Open Source Technology Centre
Daniel Vetter Aug. 5, 2013, 5:42 a.m. UTC | #2
On Sat, Jul 27, 2013 at 10:40:14AM +0100, Chris Wilson wrote:
> On Sun, Jul 28, 2013 at 01:43:02AM +0800, Chuansheng Liu wrote:
> > 
> > It is possible that during i915 device suspending with one pending
> > hotplug work, one of cases is the device resume/suspend quickly.
> > 
> > At this case, the hotplug work will be executed even after device
> > is OFF, in Intel Android platform, it will cause system hang.
> 
> See
> 
>   1343070574-23917-1-git-send-email-chris@chris-wilson.co.uk
>   http://lists.freedesktop.org/archives/intel-gfx/2012-July/019144.html
> 
> which is in response to the bug raised here
> 
>   s5hlilr4s9h.wl%tiwai@suse.de
>   http://lists.freedesktop.org/archives/intel-gfx/2012-April/016738.html

Oops, I fail. And since your patch also has the required
flush_scheduled_work (this will annoy Jesse since we flush system-wide,
but alas) and is older ... can you please resubmit with References: for
this new thread and the above two added and Chuanshen Lui cc'ed?

Thanks, Daniel
Chuansheng Liu Aug. 6, 2013, 1 a.m. UTC | #3
> -----Original Message-----
> From: Daniel Vetter [mailto:daniel.vetter@ffwll.ch] On Behalf Of Daniel Vetter
> Sent: Monday, August 05, 2013 1:42 PM
> To: Chris Wilson; Liu, Chuansheng; daniel.vetter@ffwll.ch; airlied@linux.ie;
> intel-gfx@lists.freedesktop.org; Li, Fei; dri-devel@lists.freedesktop.org
> Subject: Re: [Intel-gfx] [PATCH] drm/i915: Sync the hotplug work when device
> suspending
> 
> On Sat, Jul 27, 2013 at 10:40:14AM +0100, Chris Wilson wrote:
> > On Sun, Jul 28, 2013 at 01:43:02AM +0800, Chuansheng Liu wrote:
> > >
> > > It is possible that during i915 device suspending with one pending
> > > hotplug work, one of cases is the device resume/suspend quickly.
> > >
> > > At this case, the hotplug work will be executed even after device
> > > is OFF, in Intel Android platform, it will cause system hang.
> >
> > See
> >
> >   1343070574-23917-1-git-send-email-chris@chris-wilson.co.uk
> >   http://lists.freedesktop.org/archives/intel-gfx/2012-July/019144.html
> >
> > which is in response to the bug raised here
> >
> >   s5hlilr4s9h.wl%tiwai@suse.de
> >   http://lists.freedesktop.org/archives/intel-gfx/2012-April/016738.html
> 
> Oops, I fail. And since your patch also has the required
> flush_scheduled_work (this will annoy Jesse since we flush system-wide,
> but alas) and is older ... can you please resubmit with References: for
> this new thread and the above two added and Chuanshen Lui cc'ed?
Yes, we really need this fix otherwise will cause some system hanging issue.
Thanks.

> 
> Thanks, Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 45b3c03..95c6956 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -562,6 +562,8 @@  static int i915_drm_freeze(struct drm_device *dev)
 
 		drm_irq_uninstall(dev);
 		dev_priv->enable_hotplug_processing = false;
+		cancel_work_sync(&dev_priv->hotplug_work);
+
 		/*
 		 * Disable CRTCs directly since we want to preserve sw state
 		 * for _thaw.