All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 02/16] drm/i915: fix the FBC work allocation failure path
Date: Fri, 28 Aug 2015 17:20:02 +0300	[thread overview]
Message-ID: <20150828142002.GU5176@intel.com> (raw)
In-Reply-To: <1439588061-18064-3-git-send-email-paulo.r.zanoni@intel.com>

On Fri, Aug 14, 2015 at 06:34:07PM -0300, Paulo Zanoni wrote:
> Always update the currrent crtc, fb and vertical offset after calling
> enable_fbc. We were forgetting to do so along the failure paths when
> enabling fbc synchronously. Fix this with a new helper to enable_fbc()
> and update the state simultaneously.
> 
> v2: Improve commit message (Chris).
> 
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_fbc.c | 27 +++++++++++++++++----------
>  1 file changed, 17 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
> index c97aba2..fa9b004 100644
> --- a/drivers/gpu/drm/i915/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/intel_fbc.c
> @@ -308,6 +308,18 @@ bool intel_fbc_enabled(struct drm_i915_private *dev_priv)
>  	return dev_priv->fbc.enabled;
>  }
>  
> +static void intel_fbc_enable(struct intel_crtc *crtc,
> +			     struct drm_framebuffer *fb)

fb could be const

> +{
> +	struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
> +
> +	dev_priv->fbc.enable_fbc(crtc);
> +
> +	dev_priv->fbc.crtc = crtc;
> +	dev_priv->fbc.fb_id = fb->base.id;
> +	dev_priv->fbc.y = crtc->base.y;
> +}
> +
>  static void intel_fbc_work_fn(struct work_struct *__work)
>  {
>  	struct intel_fbc_work *work =
> @@ -321,13 +333,8 @@ static void intel_fbc_work_fn(struct work_struct *__work)
>  		/* Double check that we haven't switched fb without cancelling
>  		 * the prior work.
>  		 */
> -		if (crtc_fb == work->fb) {
> -			dev_priv->fbc.enable_fbc(work->crtc);
> -
> -			dev_priv->fbc.crtc = work->crtc;
> -			dev_priv->fbc.fb_id = crtc_fb->base.id;
> -			dev_priv->fbc.y = work->crtc->base.y;
> -		}
> +		if (crtc_fb == work->fb)
> +			intel_fbc_enable(work->crtc, work->fb);

The no locking or refcounts nature of this scares me, and should be
dealt with eventually.

But in the meantime it makes things nicer, so
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  
>  		dev_priv->fbc.fbc_work = NULL;
>  	}
> @@ -361,7 +368,7 @@ static void intel_fbc_cancel_work(struct drm_i915_private *dev_priv)
>  	dev_priv->fbc.fbc_work = NULL;
>  }
>  
> -static void intel_fbc_enable(struct intel_crtc *crtc)
> +static void intel_fbc_schedule_enable(struct intel_crtc *crtc)
>  {
>  	struct intel_fbc_work *work;
>  	struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
> @@ -373,7 +380,7 @@ static void intel_fbc_enable(struct intel_crtc *crtc)
>  	work = kzalloc(sizeof(*work), GFP_KERNEL);
>  	if (work == NULL) {
>  		DRM_ERROR("Failed to allocate FBC work structure\n");
> -		dev_priv->fbc.enable_fbc(crtc);
> +		intel_fbc_enable(crtc, crtc->base.primary->fb);
>  		return;
>  	}

BTW getting rid of this allocation would be nice. Would be one less
thing that can fail...

>  
> @@ -826,7 +833,7 @@ static void __intel_fbc_update(struct drm_i915_private *dev_priv)
>  		__intel_fbc_disable(dev_priv);
>  	}
>  
> -	intel_fbc_enable(intel_crtc);
> +	intel_fbc_schedule_enable(intel_crtc);
>  	dev_priv->fbc.no_fbc_reason = FBC_OK;
>  	return;
>  
> -- 
> 2.4.6
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-08-28 14:20 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-14 21:34 [PATCH 00/16] FBC bug fixes Paulo Zanoni
2015-08-14 21:34 ` [PATCH 01/16] drm/i915: make sure we're not changing the FBC CFB with FBC enabled Paulo Zanoni
2015-08-28 14:05   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 02/16] drm/i915: fix the FBC work allocation failure path Paulo Zanoni
2015-08-28 14:20   ` Ville Syrjälä [this message]
2015-08-28 14:50     ` Paulo Zanoni
2015-08-28 15:29       ` Ville Syrjälä
2015-09-01 10:07       ` Daniel Vetter
2015-09-01 11:03         ` Ville Syrjälä
2015-09-02  7:52           ` Daniel Vetter
2015-08-14 21:34 ` [PATCH 03/16] drm/i915: fix FBC for cases where crtc->base.y is non-zero Paulo Zanoni
2015-08-28 14:30   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 04/16] drm/i915: set ILK_DPFC_FENCE_YOFF to 0 on SNB Paulo Zanoni
2015-08-28 14:46   ` Ville Syrjälä
2015-10-08 21:26     ` Zanoni, Paulo R
2015-10-08 21:37       ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 05/16] drm/i915: check for the supported strides on HSW+ FBC Paulo Zanoni
2015-08-28 15:16   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 06/16] drm/i915: try a little harder to find an FBC CRTC Paulo Zanoni
2015-08-28 16:55   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 07/16] drm/i915: disable FBC on FIFO underruns Paulo Zanoni
2015-08-15  8:22   ` Chris Wilson
2015-08-19 12:06   ` Ville Syrjälä
2015-08-20 13:30     ` Paulo Zanoni
2015-08-20 13:58       ` Ville Syrjälä
2015-08-20 14:29         ` Paulo Zanoni
2015-08-20 15:00           ` Ville Syrjälä
2015-08-26  7:36             ` Daniel Vetter
2015-08-14 21:34 ` [PATCH 08/16] drm/i915: avoid the last 8mb of stolen on BDW/SKL Paulo Zanoni
2015-08-15  8:29   ` Chris Wilson
2015-08-18 21:49     ` Zanoni, Paulo R
2015-08-19  8:24       ` chris
2015-09-11 20:35         ` Paulo Zanoni
2015-08-14 21:34 ` [PATCH 09/16] drm/i915: print the correct amount of bytes allocated for the CFB Paulo Zanoni
2015-08-28 17:11   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 10/16] drm/i915: fix CFB size calculation Paulo Zanoni
2015-08-28 17:25   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 11/16] drm/i915/bdw: don't enable FBC when pixel rate exceeds 95% Paulo Zanoni
2015-08-28 17:41   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 12/16] drm/i915: apply WaFbcAsynchFlipDisableFbcQueue earlier Paulo Zanoni
2015-08-28 17:45   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 13/16] drm/i915: don't use the first stolen page on Broadwell Paulo Zanoni
2015-08-15  8:30   ` Chris Wilson
2015-08-19 11:55     ` Ville Syrjälä
2015-08-26  7:48       ` Daniel Vetter
2015-08-26 11:21         ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 14/16] drm/i915: don't apply WaFbcAsynchFlipDisableFbcQueue on SKL Paulo Zanoni
2015-08-28 17:51   ` Ville Syrjälä
2015-08-14 21:34 ` [PATCH 15/16] Revert "drm/i915: Allocate fbcon from stolen memory" Paulo Zanoni
2015-08-15  8:24   ` Chris Wilson
2015-08-18 21:54     ` Zanoni, Paulo R
2015-08-19  8:16       ` chris
2015-08-14 21:34 ` [PATCH 16/16] drm/i915: reject invalid formats for FBC Paulo Zanoni
2015-08-28 17:55   ` Ville Syrjälä

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150828142002.GU5176@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.