[Intel-gfx] [PATCH v4 1/2] drm/i915: Protect fbdev across slow or failed initialisation

Chris Wilson chris at chris-wilson.co.uk
Thu Mar 31 16:13:55 UTC 2016


On Thu, Mar 31, 2016 at 07:05:21PM +0300, Joonas Lahtinen wrote:
> On to, 2016-03-31 at 14:57 +0100, Chris Wilson wrote:
> >  void intel_fbdev_restore_mode(struct drm_device *dev)
> >  {
> > -	int ret;
> > -	struct drm_i915_private *dev_priv = dev->dev_private;
> > -	struct intel_fbdev *ifbdev = dev_priv->fbdev;
> > -	struct drm_fb_helper *fb_helper;
> > +	struct intel_fbdev *ifbdev = intel_fbdev_get_if_active(dev);
> >  
> > -	async_synchronize_full();
> 
> What's with the async_synchronize_full() begin removed completely?

Because it's not just wrong, but completely broken imo.

During suspend, we want to freeze the async task not flush. Then here
and during resume we skip the restoration of the unregistered fbdev, and
then when the task is woken it can complete the registration and present
the vanilla ifbdev.

During hibernation, we really just want to cancel the task and start
from scratch on resume.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list