Message ID | 1374946982.28551.4.camel@cliu38-desktop-build (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
> -----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
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
> -----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 --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.