[Intel-gfx] [PATCH] drm/i915/tgl: Add Wa_1608008084

Lucas De Marchi lucas.demarchi at intel.com
Sat Feb 22 01:39:14 UTC 2020


On Fri, Feb 21, 2020 at 04:36:53PM -0800, Jose Souza wrote:
>+ CCing people involved in the patch fixed.
>
>On Fri, 2020-02-21 at 16:28 -0800, Lucas De Marchi wrote:
>> Wa_1608008084 is an additional WA that applies to writes on FF_MODE2
>> register. We can't read it back either from CPU or GPU. Since the
>> other
>> bits should be 0, recommendation to handle Wa_1604555607 is to
>> actually
>> just write the timer value.
>>
>> Do a write only and don't try to read it, neither before or after
>> the WA is applied.
>>
>> Fixes: ff690b2111ba ("drm/i915/tgl: Implement Wa_1604555607")
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>>  drivers/gpu/drm/i915/gt/intel_workarounds.c | 22 ++++++++++---------
>> --
>>  1 file changed, 10 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c
>> b/drivers/gpu/drm/i915/gt/intel_workarounds.c
>> index 887e0dc701f7..0d76e1d6ec87 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
>> @@ -580,24 +580,22 @@ static void icl_ctx_workarounds_init(struct
>> intel_engine_cs *engine,
>>  static void tgl_ctx_workarounds_init(struct intel_engine_cs *engine,
>>  				     struct i915_wa_list *wal)
>>  {
>> -	u32 val;
>> -
>>  	/* Wa_1409142259:tgl */
>>  	WA_SET_BIT_MASKED(GEN11_COMMON_SLICE_CHICKEN3,
>>  			  GEN12_DISABLE_CPS_AWARE_COLOR_PIPE);
>>
>> -	/* Wa_1604555607:tgl */
>> -	val = intel_uncore_read(engine->uncore, FF_MODE2);
>> -	val &= ~FF_MODE2_TDS_TIMER_MASK;
>> -	val |= FF_MODE2_TDS_TIMER_128;
>>  	/*
>> -	 * FIXME: FF_MODE2 register is not readable till TGL B0. We can
>> -	 * enable verification of WA from the later steppings, which
>> enables
>> -	 * the read of FF_MODE2.
>> +	 * Wa_1604555607:gen12
>> +	 * FF_MODE2 register is not readable till TGL B0, either by CPU
>> or GPU.
>
>The line above could be removed as the comments above explain it
>better, also BSpec don't say that it will be fixed in B0.

1604555607 was documented to be fixed in B0. Just saw it's not anymore.

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

thanks
Lucas De Marchi

>
>> +	 *
>> +	 * Wa_1608008084:gen12
>> +	 * FF_MODE2 register will return the wrong value when read. The
>> default 
>> +	 * value for this register is zero for all fields and there are
>> no bit
>> +	 * masks. So instead of doing a RMW we should just write the
>> TDS timer
>> +	 * value for Wa_1604555607.
>>  	 */
>> -	wa_add(wal, FF_MODE2, FF_MODE2_TDS_TIMER_MASK, val,
>> -	       IS_TGL_REVID(engine->i915, TGL_REVID_A0, TGL_REVID_A0) ?
>> 0 :
>> -			    FF_MODE2_TDS_TIMER_MASK);
>> +	wa_add(wal, FF_MODE2, FF_MODE2_TDS_TIMER_MASK,
>> +	       FF_MODE2_TDS_TIMER_128, 0);
>>  }
>>
>>  static void


More information about the Intel-gfx mailing list