[Intel-gfx] [PATCH] drm/i915: fbdev restore mode needs to invalidate frontbuffer

Vivi, Rodrigo rodrigo.vivi at intel.com
Thu Jul 9 12:00:34 PDT 2015


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 at gmail.com] 
Sent: Thursday, July 09, 2015 11:54 AM
To: Vivi, Rodrigo
Cc: Intel Graphics Development; Zanoni, Paulo R
Subject: Re: [Intel-gfx] [PATCH] drm/i915: fbdev restore mode needs to invalidate frontbuffer

2015-07-08 20:25 GMT-03:00 Rodrigo Vivi <rodrigo.vivi at intel.com>:
> 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 at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

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 at intel.com>

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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



--
Paulo Zanoni


More information about the Intel-gfx mailing list