[Intel-gfx] [PATCH 1/7] drm/i915: Fix application of WaInPlaceDecompressionHang

Souza, Jose jose.souza at intel.com
Mon Jul 19 17:51:45 UTC 2021


On Fri, 2021-07-16 at 22:14 -0700, Matt Roper wrote:
> On SKL we've been applying this workaround on H0+ steppings, which is
> actually backwards; H0 is supposed to be the first stepping where the
> workaround is no longer needed.  Flip the bounds so that the workaround
> applies to all steppings _before_ H0.
> 
> On BXT we've been applying this workaround to all steppings, but the
> bspec tells us it's only needed until C0.  Pre-C0 GT steppings only
> appeared in pre-production hardware, which we no longer support in the
> driver, so we can drop the workaround completely for this platform.
> 
> On ICL we've been applying this workaround to all steppings, but there
> doesn't seem to be any indication that this workaround was ever needed
> for this platform (even now-deprecated page 20196 of the bspec doesn't
> mention it).  We can go ahead and drop it.
> 
> I also don't see any mention of this workaround being needed for KBL,
> although this may be an oversight since the workaround is needed for all
> steppings of CFL.  I'll leave the workaround in place for KBL to be
> safe.

Reviewed-by: José Roberto de Souza <jose.souza at intel.com>

> 
> Bspec: 14091, 33450
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_workarounds.c | 20 ++------------------
>  1 file changed, 2 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 7731db33c46a..76a3b5d5e9dc 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -838,23 +838,12 @@ skl_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal)
>  		    GEN8_EU_GAUNIT_CLOCK_GATE_DISABLE);
>  
>  	/* WaInPlaceDecompressionHang:skl */
> -	if (IS_SKL_GT_STEP(i915, STEP_H0, STEP_FOREVER))
> +	if (IS_SKL_GT_STEP(i915, STEP_A0, STEP_H0 - 1))
>  		wa_write_or(wal,
>  			    GEN9_GAMT_ECO_REG_RW_IA,
>  			    GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
>  }
>  
> -static void
> -bxt_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal)
> -{
> -	gen9_gt_workarounds_init(i915, wal);
> -
> -	/* WaInPlaceDecompressionHang:bxt */
> -	wa_write_or(wal,
> -		    GEN9_GAMT_ECO_REG_RW_IA,
> -		    GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
> -}
> -
>  static void
>  kbl_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal)
>  {
> @@ -942,11 +931,6 @@ icl_gt_workarounds_init(struct drm_i915_private *i915, struct i915_wa_list *wal)
>  {
>  	icl_wa_init_mcr(i915, wal);
>  
> -	/* WaInPlaceDecompressionHang:icl */
> -	wa_write_or(wal,
> -		    GEN9_GAMT_ECO_REG_RW_IA,
> -		    GAMT_ECO_ENABLE_IN_PLACE_DECOMPRESS);
> -
>  	/* WaModifyGamTlbPartitioning:icl */
>  	wa_write_clr_set(wal,
>  			 GEN11_GACB_PERF_CTRL,
> @@ -1081,7 +1065,7 @@ gt_init_workarounds(struct drm_i915_private *i915, struct i915_wa_list *wal)
>  	else if (IS_KABYLAKE(i915))
>  		kbl_gt_workarounds_init(i915, wal);
>  	else if (IS_BROXTON(i915))
> -		bxt_gt_workarounds_init(i915, wal);
> +		gen9_gt_workarounds_init(i915, wal);
>  	else if (IS_SKYLAKE(i915))
>  		skl_gt_workarounds_init(i915, wal);
>  	else if (IS_HASWELL(i915))



More information about the Intel-gfx mailing list