diff mbox

[2/2] drm/i915: Disable Render power gating

Message ID 1428655290-836-2-git-send-email-sagar.a.kamble@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

sagar.a.kamble@intel.com April 10, 2015, 8:41 a.m. UTC
From: Sagar Kamble <sagar.a.kamble@intel.com>

When RC6 along with Render power gating is enabled, GPU hang
happens due to lack of synchronization between GTI and Render reset.

Change-Id: If1614206341eb52a21eadae8c5ebb2655029b50c
Signed-off-by: Sagar Kamble <sagar.a.kamble@intel.com>

Conflicts:
	drivers/gpu/drm/i915/intel_pm.c
---
 drivers/gpu/drm/i915/intel_pm.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Lespiau, Damien April 10, 2015, 8:50 a.m. UTC | #1
On Fri, Apr 10, 2015 at 02:11:30PM +0530, sagar.a.kamble@intel.com wrote:
> From: Sagar Kamble <sagar.a.kamble@intel.com>
> 
> When RC6 along with Render power gating is enabled, GPU hang
> happens due to lack of synchronization between GTI and Render reset.
> 
> Change-Id: If1614206341eb52a21eadae8c5ebb2655029b50c
> Signed-off-by: Sagar Kamble <sagar.a.kamble@intel.com>
> 
> Conflicts:
> 	drivers/gpu/drm/i915/intel_pm.c

So, is this a hang that occurs at reset? Do you know if we can do better
by disabling/enabling it around reset?

> ---
>  drivers/gpu/drm/i915/intel_pm.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 9975401..f080710 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4350,9 +4350,12 @@ static void gen9_enable_rc6(struct drm_device *dev)
>  				   GEN6_RC_CTL_EI_MODE(1) |
>  				   rc6_mask);
>  
> -	/* 3b: Enable Coarse Power Gating only when RC6 is enabled */
> +	/*
> +	 * 3b: Enable Coarse Power Gating only when RC6 is enabled.
> +	 * WaDisableRenderPowerGating - Render PG need to be disabled with RC6.
> +	 */

I don't see any WaDisableRenderPowerGating name in the wa databse, where
does that name come from?

>  	I915_WRITE(GEN9_PG_ENABLE, (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ?
> -			(GEN9_RENDER_PG_ENABLE | GEN9_MEDIA_PG_ENABLE) : 0);
> +			GEN9_MEDIA_PG_ENABLE : 0);
>  
>  
>  	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
> -- 
> 1.8.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Lespiau, Damien April 10, 2015, 11:11 a.m. UTC | #2
On Fri, Apr 10, 2015 at 02:11:30PM +0530, sagar.a.kamble@intel.com wrote:
> From: Sagar Kamble <sagar.a.kamble@intel.com>
> 
> When RC6 along with Render power gating is enabled, GPU hang
> happens due to lack of synchronization between GTI and Render reset.

Maybe, instead of reset here, say render being power gated?

> Change-Id: If1614206341eb52a21eadae8c5ebb2655029b50c
> Signed-off-by: Sagar Kamble <sagar.a.kamble@intel.com>
> 
> Conflicts:
> 	drivers/gpu/drm/i915/intel_pm.c

I have limited info about this, but it seems to fix something that has
been characterized recently. There may be more dubious interactions to
fix around this coarse power gating, RC6 entry and forcewake, but that's
another story. So with the skl,bxt mention added:

Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_pm.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 9975401..f080710 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4350,9 +4350,12 @@ static void gen9_enable_rc6(struct drm_device *dev)
>  				   GEN6_RC_CTL_EI_MODE(1) |
>  				   rc6_mask);
>  
> -	/* 3b: Enable Coarse Power Gating only when RC6 is enabled */
> +	/*
> +	 * 3b: Enable Coarse Power Gating only when RC6 is enabled.
> +	 * WaDisableRenderPowerGating - Render PG need to be disabled with RC6.
> +	 */

WaDisableRenderPowerGating:skl,bxt

>  	I915_WRITE(GEN9_PG_ENABLE, (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ?
> -			(GEN9_RENDER_PG_ENABLE | GEN9_MEDIA_PG_ENABLE) : 0);
> +			GEN9_MEDIA_PG_ENABLE : 0);
>  
>  
>  	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
> -- 
> 1.8.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 9975401..f080710 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4350,9 +4350,12 @@  static void gen9_enable_rc6(struct drm_device *dev)
 				   GEN6_RC_CTL_EI_MODE(1) |
 				   rc6_mask);
 
-	/* 3b: Enable Coarse Power Gating only when RC6 is enabled */
+	/*
+	 * 3b: Enable Coarse Power Gating only when RC6 is enabled.
+	 * WaDisableRenderPowerGating - Render PG need to be disabled with RC6.
+	 */
 	I915_WRITE(GEN9_PG_ENABLE, (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ?
-			(GEN9_RENDER_PG_ENABLE | GEN9_MEDIA_PG_ENABLE) : 0);
+			GEN9_MEDIA_PG_ENABLE : 0);
 
 
 	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);