On Thu, May 28, 2015 at 10:26:58AM -0700, Rodrigo Vivi wrote: > With unified modeset and flip paths introduced recently when switching > to fbcon PSR was being disabled on fb_set_par path but re-enabled on > fb_pan_display one, causing missed screen updates and un unusable > console. > > Regression introduced with: > > commit bb54662350662815b4bfc2ff4464330a2dbd7041 > Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> > Date: Tue Apr 21 17:13:13 2015 +0300 > > drm/i915: Unify modeset and flip paths of intel_crtc_set_config() > > Cc: Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@xxxxxxxxx> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> Queued for -next-fixes, thanks for the patch. -Daniel > --- > drivers/gpu/drm/i915/intel_fbdev.c | 28 +++++++++++++++++++++++++++- > 1 file changed, 27 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c > index 4e7e7da..6372cfc 100644 > --- a/drivers/gpu/drm/i915/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/intel_fbdev.c > @@ -96,6 +96,32 @@ static int intel_fbdev_blank(int blank, struct fb_info *info) > return ret; > } > > +static int intel_fbdev_pan_display(struct fb_var_screeninfo *var, > + struct fb_info *info) > +{ > + struct drm_fb_helper *fb_helper = info->par; > + struct intel_fbdev *ifbdev = > + container_of(fb_helper, struct intel_fbdev, helper); > + > + int ret; > + ret = drm_fb_helper_pan_display(var, info); > + > + if (ret == 0) { > + /* > + * FIXME: fbdev presumes that all callbacks also work from > + * atomic contexts and relies on that for emergency oops > + * printing. KMS totally doesn't do that and the locking here is > + * by far not the only place this goes wrong. Ignore this for > + * now until we solve this for real. > + */ > + mutex_lock(&fb_helper->dev->struct_mutex); > + intel_fb_obj_invalidate(ifbdev->fb->obj, NULL, ORIGIN_GTT); > + mutex_unlock(&fb_helper->dev->struct_mutex); > + } > + > + return ret; > +} > + > static struct fb_ops intelfb_ops = { > .owner = THIS_MODULE, > .fb_check_var = drm_fb_helper_check_var, > @@ -103,7 +129,7 @@ static struct fb_ops intelfb_ops = { > .fb_fillrect = cfb_fillrect, > .fb_copyarea = cfb_copyarea, > .fb_imageblit = cfb_imageblit, > - .fb_pan_display = drm_fb_helper_pan_display, > + .fb_pan_display = intel_fbdev_pan_display, > .fb_blank = intel_fbdev_blank, > .fb_setcmap = drm_fb_helper_setcmap, > .fb_debug_enter = drm_fb_helper_debug_enter, > -- > 2.1.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx