[Intel-gfx] [PATCH 4/4] drm/i915: Tidy workaround definitions
Matt Atwood
matthew.s.atwood at intel.com
Wed Aug 16 20:07:08 UTC 2023
On Tue, Aug 15, 2023 at 10:36:16AM -0700, Matt Roper wrote:
> Removal of the DG2 pre-production workarounds has left duplicate
> condition blocks in a couple places, as well as some inconsistent
> platform ordering. Reshuffle and consolidate some of the workarounds to
> reduce the number of condition blocks and to more consistently follow
> the "newest platform first" convention. Code movement only; no
> functional change.
>
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
Reviewed-by: Matt Atwood <matthew.s.atwood at intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 100 +++++++++-----------
> 1 file changed, 46 insertions(+), 54 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 7b426f3015b3..69973dc51828 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -2337,6 +2337,19 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> true);
> }
>
> + if (IS_DG2(i915) || IS_ALDERLAKE_P(i915) || IS_ALDERLAKE_S(i915) ||
> + IS_DG1(i915) || IS_ROCKETLAKE(i915) || IS_TIGERLAKE(i915)) {
> + /*
> + * Wa_1606700617:tgl,dg1,adl-p
> + * Wa_22010271021:tgl,rkl,dg1,adl-s,adl-p
> + * Wa_14010826681:tgl,dg1,rkl,adl-p
> + * Wa_18019627453:dg2
> + */
> + wa_masked_en(wal,
> + GEN9_CS_DEBUG_MODE1,
> + FF_DOP_CLOCK_GATE_DISABLE);
> + }
> +
> if (IS_ALDERLAKE_P(i915) || IS_ALDERLAKE_S(i915) || IS_DG1(i915) ||
> IS_ROCKETLAKE(i915) || IS_TIGERLAKE(i915)) {
> /* Wa_1606931601:tgl,rkl,dg1,adl-s,adl-p */
> @@ -2350,19 +2363,11 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> */
> wa_write_or(wal, GEN7_FF_THREAD_MODE,
> GEN12_FF_TESSELATION_DOP_GATE_DISABLE);
> - }
>
> - if (IS_ALDERLAKE_P(i915) || IS_DG2(i915) || IS_ALDERLAKE_S(i915) ||
> - IS_DG1(i915) || IS_ROCKETLAKE(i915) || IS_TIGERLAKE(i915)) {
> - /*
> - * Wa_1606700617:tgl,dg1,adl-p
> - * Wa_22010271021:tgl,rkl,dg1,adl-s,adl-p
> - * Wa_14010826681:tgl,dg1,rkl,adl-p
> - * Wa_18019627453:dg2
> - */
> - wa_masked_en(wal,
> - GEN9_CS_DEBUG_MODE1,
> - FF_DOP_CLOCK_GATE_DISABLE);
> + /* Wa_1406941453:tgl,rkl,dg1,adl-s,adl-p */
> + wa_mcr_masked_en(wal,
> + GEN10_SAMPLER_MODE,
> + ENABLE_SMALLPL);
> }
>
> if (IS_ALDERLAKE_P(i915) || IS_ALDERLAKE_S(i915) ||
> @@ -2389,14 +2394,6 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
> GEN8_RC_SEMA_IDLE_MSG_DISABLE);
> }
>
> - if (IS_DG1(i915) || IS_ROCKETLAKE(i915) || IS_TIGERLAKE(i915) ||
> - IS_ALDERLAKE_S(i915) || IS_ALDERLAKE_P(i915)) {
> - /* Wa_1406941453:tgl,rkl,dg1,adl-s,adl-p */
> - wa_mcr_masked_en(wal,
> - GEN10_SAMPLER_MODE,
> - ENABLE_SMALLPL);
> - }
> -
> if (GRAPHICS_VER(i915) == 11) {
> /* This is not an Wa. Enable for better image quality */
> wa_masked_en(wal,
> @@ -2877,6 +2874,9 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
> /* Wa_22013037850 */
> wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW,
> DISABLE_128B_EVICTION_COMMAND_UDW);
> +
> + /* Wa_18017747507 */
> + wa_masked_en(wal, VFG_PREEMPTION_CHICKEN, POLYGON_TRIFAN_LINELOOP_DISABLE);
> }
>
> if (IS_MTL_GRAPHICS_STEP(i915, M, STEP_A0, STEP_B0) ||
> @@ -2887,11 +2887,20 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
> wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0, DISABLE_D8_D16_COASLESCE);
> }
>
> - if (IS_MTL_GRAPHICS_STEP(i915, M, STEP_A0, STEP_B0) ||
> - IS_MTL_GRAPHICS_STEP(i915, P, STEP_A0, STEP_B0) ||
> - IS_DG2(i915)) {
> - /* Wa_18017747507 */
> - wa_masked_en(wal, VFG_PREEMPTION_CHICKEN, POLYGON_TRIFAN_LINELOOP_DISABLE);
> + if (IS_PONTEVECCHIO(i915) || IS_DG2(i915)) {
> + /* Wa_14015227452:dg2,pvc */
> + wa_mcr_masked_en(wal, GEN9_ROW_CHICKEN4, XEHP_DIS_BBL_SYSPIPE);
> +
> + /* Wa_16015675438:dg2,pvc */
> + wa_masked_en(wal, FF_SLICE_CS_CHICKEN2, GEN12_PERF_FIX_BALANCING_CFE_DISABLE);
> + }
> +
> + if (IS_DG2(i915)) {
> + /*
> + * Wa_16011620976:dg2_g11
> + * Wa_22015475538:dg2
> + */
> + wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW, DIS_CHAIN_2XSIMD8);
> }
>
> if (IS_DG2_G11(i915)) {
> @@ -2906,6 +2915,18 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
> /* Wa_22013059131:dg2 */
> wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0,
> FORCE_1_SUB_MESSAGE_PER_FRAGMENT);
> +
> + /*
> + * Wa_22012654132
> + *
> + * Note that register 0xE420 is write-only and cannot be read
> + * back for verification on DG2 (due to Wa_14012342262), so
> + * we need to explicitly skip the readback.
> + */
> + wa_mcr_add(wal, GEN10_CACHE_MODE_SS, 0,
> + _MASKED_BIT_ENABLE(ENABLE_PREFETCH_INTO_IC),
> + 0 /* write-only, so skip validation */,
> + true);
> }
>
> if (IS_XEHPSDV(i915)) {
> @@ -2923,35 +2944,6 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
> wa_mcr_masked_en(wal, GEN8_HALF_SLICE_CHICKEN1,
> GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE);
> }
> -
> - if (IS_DG2(i915) || IS_PONTEVECCHIO(i915)) {
> - /* Wa_14015227452:dg2,pvc */
> - wa_mcr_masked_en(wal, GEN9_ROW_CHICKEN4, XEHP_DIS_BBL_SYSPIPE);
> -
> - /* Wa_16015675438:dg2,pvc */
> - wa_masked_en(wal, FF_SLICE_CS_CHICKEN2, GEN12_PERF_FIX_BALANCING_CFE_DISABLE);
> - }
> -
> - if (IS_DG2(i915)) {
> - /*
> - * Wa_16011620976:dg2_g11
> - * Wa_22015475538:dg2
> - */
> - wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW, DIS_CHAIN_2XSIMD8);
> - }
> -
> - if (IS_DG2_G11(i915))
> - /*
> - * Wa_22012654132
> - *
> - * Note that register 0xE420 is write-only and cannot be read
> - * back for verification on DG2 (due to Wa_14012342262), so
> - * we need to explicitly skip the readback.
> - */
> - wa_mcr_add(wal, GEN10_CACHE_MODE_SS, 0,
> - _MASKED_BIT_ENABLE(ENABLE_PREFETCH_INTO_IC),
> - 0 /* write-only, so skip validation */,
> - true);
> }
>
> static void
> --
> 2.41.0
>
More information about the Intel-gfx
mailing list