@@ -789,8 +789,13 @@ static void xelpg_ctx_gt_tuning_init(struct intel_engine_cs *engine,
789
789
790
790
dg2_ctx_gt_tuning_init (engine , wal );
791
791
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 )))
794
799
wa_add (wal , DRAW_WATERMARK , VERT_WM_VAL , 0x3FF , 0 , false);
795
800
}
796
801
@@ -911,7 +916,7 @@ __intel_engine_init_ctx_wa(struct intel_engine_cs *engine,
911
916
if (engine -> class != RENDER_CLASS )
912
917
goto done ;
913
918
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 )))
915
920
xelpg_ctx_workarounds_init (engine , wal );
916
921
else if (IS_PONTEVECCHIO (i915 ))
917
922
; /* noop; none at this time */
@@ -1646,7 +1651,7 @@ pvc_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
1646
1651
static void
1647
1652
xelpg_gt_workarounds_init (struct intel_gt * gt , struct i915_wa_list * wal )
1648
1653
{
1649
- /* Wa_14018778641 / Wa_18018781329 */
1654
+ /* Wa_14018575942 / Wa_18018781329 */
1650
1655
wa_mcr_write_or (wal , COMP_MOD_CTRL , FORCE_MISS_FTLB );
1651
1656
1652
1657
/* Wa_22016670082 */
@@ -1713,7 +1718,7 @@ xelpmp_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
1713
1718
*/
1714
1719
static void gt_tuning_settings (struct intel_gt * gt , struct i915_wa_list * wal )
1715
1720
{
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 ))) {
1717
1722
wa_mcr_write_or (wal , XEHP_L3SCQREG7 , BLEND_FILL_CACHING_OPT_DIS );
1718
1723
wa_mcr_write_or (wal , XEHP_SQCM , EN_32B_ACCESS );
1719
1724
}
@@ -1746,7 +1751,7 @@ gt_init_workarounds(struct intel_gt *gt, struct i915_wa_list *wal)
1746
1751
return ;
1747
1752
}
1748
1753
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 )))
1750
1755
xelpg_gt_workarounds_init (gt , wal );
1751
1756
else if (IS_PONTEVECCHIO (i915 ))
1752
1757
pvc_gt_workarounds_init (gt , wal );
@@ -2219,7 +2224,7 @@ void intel_engine_init_whitelist(struct intel_engine_cs *engine)
2219
2224
2220
2225
if (engine -> gt -> type == GT_MEDIA )
2221
2226
; /* 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 )))
2223
2228
xelpg_whitelist_build (engine );
2224
2229
else if (IS_PONTEVECCHIO (i915 ))
2225
2230
pvc_whitelist_build (engine );
@@ -2831,7 +2836,7 @@ add_render_compute_tuning_settings(struct intel_gt *gt,
2831
2836
{
2832
2837
struct drm_i915_private * i915 = gt -> i915 ;
2833
2838
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 ))
2835
2840
wa_mcr_write_clr_set (wal , RT_CTRL , STACKID_CTRL , STACKID_CTRL_512 );
2836
2841
2837
2842
/*
@@ -2884,7 +2889,8 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
2884
2889
}
2885
2890
2886
2891
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 )))
2888
2894
/* Wa_14017856879 */
2889
2895
wa_mcr_masked_en (wal , GEN9_ROW_CHICKEN3 , MTL_DISABLE_FIX_FOR_EOT_FLUSH );
2890
2896
0 commit comments