@@ -789,8 +789,13 @@ static void xelpg_ctx_gt_tuning_init(struct intel_engine_cs *engine,
789789
790790 dg2_ctx_gt_tuning_init (engine , wal );
791791
792- if (IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 70 ), STEP_B0 , STEP_FOREVER ) ||
793- IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 71 ), STEP_B0 , STEP_FOREVER ))
792+ /*
793+ * Due to Wa_16014892111, the DRAW_WATERMARK tuning must be done in
794+ * gen12_emit_indirect_ctx_rcs() rather than here on some early
795+ * steppings.
796+ */
797+ if (!(IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 70 ), STEP_A0 , STEP_B0 ) ||
798+ IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 71 ), STEP_A0 , STEP_B0 )))
794799 wa_add (wal , DRAW_WATERMARK , VERT_WM_VAL , 0x3FF , 0 , false);
795800}
796801
@@ -911,7 +916,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
911916 if (engine -> class != RENDER_CLASS )
912917 goto done ;
913918
914- if (IS_GFX_GT_IP_RANGE (engine -> gt , IP_VER (12 , 70 ), IP_VER (12 , 71 )))
919+ if (IS_GFX_GT_IP_RANGE (engine -> gt , IP_VER (12 , 70 ), IP_VER (12 , 74 )))
915920 xelpg_ctx_workarounds_init (engine , wal );
916921 else if (IS_PONTEVECCHIO (i915 ))
917922 ; /* noop; none at this time */
@@ -1646,7 +1651,7 @@ pvc_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
16461651static void
16471652xelpg_gt_workarounds_init (struct intel_gt * gt , struct i915_wa_list * wal )
16481653{
1649- /* Wa_14018778641 / Wa_18018781329 */
1654+ /* Wa_14018575942 / Wa_18018781329 */
16501655 wa_mcr_write_or (wal , COMP_MOD_CTRL , FORCE_MISS_FTLB );
16511656
16521657 /* Wa_22016670082 */
@@ -1713,7 +1718,7 @@ xelpmp_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
17131718 */
17141719static void gt_tuning_settings (struct intel_gt * gt , struct i915_wa_list * wal )
17151720{
1716- if (IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 70 ), IP_VER (12 , 71 ))) {
1721+ if (IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 70 ), IP_VER (12 , 74 ))) {
17171722 wa_mcr_write_or (wal , XEHP_L3SCQREG7 , BLEND_FILL_CACHING_OPT_DIS );
17181723 wa_mcr_write_or (wal , XEHP_SQCM , EN_32B_ACCESS );
17191724 }
@@ -1746,7 +1751,7 @@ gt_init_workarounds(struct intel_gt *gt, struct i915_wa_list *wal)
17461751 return ;
17471752 }
17481753
1749- if (IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 70 ), IP_VER (12 , 71 )))
1754+ if (IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 70 ), IP_VER (12 , 74 )))
17501755 xelpg_gt_workarounds_init (gt , wal );
17511756 else if (IS_PONTEVECCHIO (i915 ))
17521757 pvc_gt_workarounds_init (gt , wal );
@@ -2219,7 +2224,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
22192224
22202225 if (engine -> gt -> type == GT_MEDIA )
22212226 ; /* none yet */
2222- else if (IS_GFX_GT_IP_RANGE (engine -> gt , IP_VER (12 , 70 ), IP_VER (12 , 71 )))
2227+ else if (IS_GFX_GT_IP_RANGE (engine -> gt , IP_VER (12 , 70 ), IP_VER (12 , 74 )))
22232228 xelpg_whitelist_build (engine );
22242229 else if (IS_PONTEVECCHIO (i915 ))
22252230 pvc_whitelist_build (engine );
@@ -2831,7 +2836,7 @@ add_render_compute_tuning_settings(struct intel_gt *gt,
28312836{
28322837 struct drm_i915_private * i915 = gt -> i915 ;
28332838
2834- if (IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 70 ), IP_VER (12 , 71 )) || IS_DG2 (i915 ))
2839+ if (IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 70 ), IP_VER (12 , 74 )) || IS_DG2 (i915 ))
28352840 wa_mcr_write_clr_set (wal , RT_CTRL , STACKID_CTRL , STACKID_CTRL_512 );
28362841
28372842 /*
@@ -2884,7 +2889,8 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
28842889 }
28852890
28862891 if (IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 70 ), STEP_B0 , STEP_FOREVER ) ||
2887- IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 71 ), STEP_B0 , STEP_FOREVER ))
2892+ IS_GFX_GT_IP_STEP (gt , IP_VER (12 , 71 ), STEP_B0 , STEP_FOREVER ) ||
2893+ IS_GFX_GT_IP_RANGE (gt , IP_VER (12 , 74 ), IP_VER (12 , 74 )))
28882894 /* Wa_14017856879 */
28892895 wa_mcr_masked_en (wal , GEN9_ROW_CHICKEN3 , MTL_DISABLE_FIX_FOR_EOT_FLUSH );
28902896
0 commit comments