Those "FIXME" are for atomic fb ops callbacks what I don't believe that applies for this case. -----Original Message----- From: Paulo Zanoni [mailto:przanoni@xxxxxxxxx] Sent: Thursday, July 09, 2015 11:54 AM To: Vivi, Rodrigo Cc: Intel Graphics Development; Zanoni, Paulo R Subject: Re: [PATCH] drm/i915: fbdev restore mode needs to invalidate frontbuffer 2015-07-08 20:25 GMT-03:00 Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>: > This fbdev restore mode was another corner case that was now calling > frontbuffer flip and flush and making we miss screen updates with PSR > enabled. > > So let's also add the invalidate hack here while we don't have a > reliable dirty fbdev op. > > v2: As pointed by Paulo: removed seg fault risk, used fb_helper > when possible and put brackets on if. > > Cc: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> I just realized the other places that call intel_fb_obj_invalidate() on this file have a huge FIXME comment. With or without that: Reviewed-by: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> You/Daniel may also want to add: Testcase: igt/kms_fbcon_fbt/psr > --- > drivers/gpu/drm/i915/intel_fbdev.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_fbdev.c > b/drivers/gpu/drm/i915/intel_fbdev.c > index 44c9ccc..fe176d8 100644 > --- a/drivers/gpu/drm/i915/intel_fbdev.c > +++ b/drivers/gpu/drm/i915/intel_fbdev.c > @@ -825,11 +825,20 @@ 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; > > - if (!dev_priv->fbdev) > + if (!ifbdev) > return; > > - ret = drm_fb_helper_restore_fbdev_mode_unlocked(&dev_priv->fbdev->helper); > - if (ret) > + fb_helper = &ifbdev->helper; > + > + ret = drm_fb_helper_restore_fbdev_mode_unlocked(fb_helper); > + if (ret) { > DRM_DEBUG("failed to restore crtc mode\n"); > + } else { > + mutex_lock(&fb_helper->dev->struct_mutex); > + intel_fb_obj_invalidate(ifbdev->fb->obj, ORIGIN_GTT); > + mutex_unlock(&fb_helper->dev->struct_mutex); > + } > } > -- > 2.1.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Paulo Zanoni _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx