diff mbox

drm/i915: Use fw_domains_put_with_fifo() on HSW

Message ID 1460633942-24013-1-git-send-email-ville.syrjala@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ville Syrjälä April 14, 2016, 11:39 a.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

HSW still has the wake FIFO, so let's check it.

Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Deepak S <deepak.s@linux.intel.com>
Fixes: 05a2fb157e44 ("drm/i915: Consolidate forcewake code")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_uncore.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Ville Syrjälä April 14, 2016, 11:48 a.m. UTC | #1
On Thu, Apr 14, 2016 at 02:39:02PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> HSW still has the wake FIFO, so let's check it.
> 
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Cc: Deepak S <deepak.s@linux.intel.com>
> Fixes: 05a2fb157e44 ("drm/i915: Consolidate forcewake code")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Oh and I guess we might want
Cc: stable@vger.kernel.org

> ---
>  drivers/gpu/drm/i915/intel_uncore.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 4db21ef36b16..4f1dfe616856 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1265,7 +1265,11 @@ static void intel_uncore_fw_domains_init(struct drm_device *dev)
>  	} else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
>  		dev_priv->uncore.funcs.force_wake_get =
>  			fw_domains_get_with_thread_status;
> -		dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
> +		if (IS_HASWELL(dev))
> +			dev_priv->uncore.funcs.force_wake_put =
> +				fw_domains_put_with_fifo;
> +		else
> +			dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
>  		fw_domain_init(dev_priv, FW_DOMAIN_ID_RENDER,
>  			       FORCEWAKE_MT, FORCEWAKE_ACK_HSW);
>  	} else if (IS_IVYBRIDGE(dev)) {
> -- 
> 2.7.4
Mika Kuoppala April 14, 2016, 11:51 a.m. UTC | #2
ville.syrjala@linux.intel.com writes:

> [ text/plain ]
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> HSW still has the wake FIFO, so let's check it.
>
> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> Cc: Deepak S <deepak.s@linux.intel.com>
> Fixes: 05a2fb157e44 ("drm/i915: Consolidate forcewake code")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_uncore.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 4db21ef36b16..4f1dfe616856 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1265,7 +1265,11 @@ static void intel_uncore_fw_domains_init(struct drm_device *dev)
>  	} else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
>  		dev_priv->uncore.funcs.force_wake_get =
>  			fw_domains_get_with_thread_status;
> -		dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
> +		if (IS_HASWELL(dev))
> +			dev_priv->uncore.funcs.force_wake_put =
> +				fw_domains_put_with_fifo;
> +		else
> +			dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
>  		fw_domain_init(dev_priv, FW_DOMAIN_ID_RENDER,
>  			       FORCEWAKE_MT, FORCEWAKE_ACK_HSW);
>  	} else if (IS_IVYBRIDGE(dev)) {
> -- 
> 2.7.4
Chris Wilson April 14, 2016, 12:18 p.m. UTC | #3
On Thu, Apr 14, 2016 at 02:51:02PM +0300, Mika Kuoppala wrote:
> ville.syrjala@linux.intel.com writes:
> 
> > [ text/plain ]
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > HSW still has the wake FIFO, so let's check it.
> >
> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > Cc: Deepak S <deepak.s@linux.intel.com>
> > Fixes: 05a2fb157e44 ("drm/i915: Consolidate forcewake code")
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>

Oh my. This could help explain some of the instablity on Haswell...
Cc: stable@vger.kernel.org
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Ville Syrjälä April 14, 2016, 12:28 p.m. UTC | #4
On Thu, Apr 14, 2016 at 02:51:02PM +0300, Mika Kuoppala wrote:
> ville.syrjala@linux.intel.com writes:
> 
> > [ text/plain ]
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > HSW still has the wake FIFO, so let's check it.
> >
> > Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
> > Cc: Deepak S <deepak.s@linux.intel.com>
> > Fixes: 05a2fb157e44 ("drm/i915: Consolidate forcewake code")
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>

Pushed to dinq. Thanks for the review.

> 
> > ---
> >  drivers/gpu/drm/i915/intel_uncore.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > index 4db21ef36b16..4f1dfe616856 100644
> > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > @@ -1265,7 +1265,11 @@ static void intel_uncore_fw_domains_init(struct drm_device *dev)
> >  	} else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
> >  		dev_priv->uncore.funcs.force_wake_get =
> >  			fw_domains_get_with_thread_status;
> > -		dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
> > +		if (IS_HASWELL(dev))
> > +			dev_priv->uncore.funcs.force_wake_put =
> > +				fw_domains_put_with_fifo;
> > +		else
> > +			dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
> >  		fw_domain_init(dev_priv, FW_DOMAIN_ID_RENDER,
> >  			       FORCEWAKE_MT, FORCEWAKE_ACK_HSW);
> >  	} else if (IS_IVYBRIDGE(dev)) {
> > -- 
> > 2.7.4
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 4db21ef36b16..4f1dfe616856 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -1265,7 +1265,11 @@  static void intel_uncore_fw_domains_init(struct drm_device *dev)
 	} else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
 		dev_priv->uncore.funcs.force_wake_get =
 			fw_domains_get_with_thread_status;
-		dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
+		if (IS_HASWELL(dev))
+			dev_priv->uncore.funcs.force_wake_put =
+				fw_domains_put_with_fifo;
+		else
+			dev_priv->uncore.funcs.force_wake_put = fw_domains_put;
 		fw_domain_init(dev_priv, FW_DOMAIN_ID_RENDER,
 			       FORCEWAKE_MT, FORCEWAKE_ACK_HSW);
 	} else if (IS_IVYBRIDGE(dev)) {