Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/xe/xelp: Add Wa_18022495364

Add Wa_18022495364 as a context workaround batch buffer workaround.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20250711160153.49833-9-tvrtko.ursulin@igalia.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

authored by

Tvrtko Ursulin and committed by
Lucas De Marchi
ca33cd27 e8372ede

+25
+3
drivers/gpu/drm/xe/regs/xe_engine_regs.h
··· 111 111 #define PPHWSP_CSB_AND_TIMESTAMP_REPORT_DIS REG_BIT(14) 112 112 #define CS_PRIORITY_MEM_READ REG_BIT(7) 113 113 114 + #define CS_DEBUG_MODE2(base) XE_REG((base) + 0xd8, XE_REG_OPTION_MASKED) 115 + #define INSTRUCTION_STATE_CACHE_INVALIDATE REG_BIT(6) 116 + 114 117 #define FF_SLICE_CS_CHICKEN1(base) XE_REG((base) + 0xe0, XE_REG_OPTION_MASKED) 115 118 #define FFSC_PERCTX_PREEMPT_CTRL REG_BIT(14) 116 119
+21
drivers/gpu/drm/xe/xe_lrc.c
··· 1056 1056 return cmd - batch; 1057 1057 } 1058 1058 1059 + static ssize_t setup_invalidate_state_cache_wa(struct xe_lrc *lrc, 1060 + struct xe_hw_engine *hwe, 1061 + u32 *batch, size_t max_len) 1062 + { 1063 + u32 *cmd = batch; 1064 + 1065 + if (!XE_WA(lrc->gt, 18022495364) || 1066 + hwe->class != XE_ENGINE_CLASS_RENDER) 1067 + return 0; 1068 + 1069 + if (xe_gt_WARN_ON(lrc->gt, max_len < 3)) 1070 + return -ENOSPC; 1071 + 1072 + *cmd++ = MI_LOAD_REGISTER_IMM | MI_LRI_NUM_REGS(1); 1073 + *cmd++ = CS_DEBUG_MODE1(0).addr; 1074 + *cmd++ = _MASKED_BIT_ENABLE(INSTRUCTION_STATE_CACHE_INVALIDATE); 1075 + 1076 + return cmd - batch; 1077 + } 1078 + 1059 1079 struct bo_setup { 1060 1080 ssize_t (*setup)(struct xe_lrc *lrc, struct xe_hw_engine *hwe, 1061 1081 u32 *batch, size_t max_size); ··· 1152 1132 { 1153 1133 static const struct bo_setup funcs[] = { 1154 1134 { .setup = setup_timestamp_wa }, 1135 + { .setup = setup_invalidate_state_cache_wa }, 1155 1136 { .setup = setup_utilization_wa }, 1156 1137 }; 1157 1138 struct bo_setup_state state = {
+1
drivers/gpu/drm/xe/xe_wa_oob.rules
··· 1 1 1607983814 GRAPHICS_VERSION_RANGE(1200, 1210) 2 2 16010904313 GRAPHICS_VERSION_RANGE(1200, 1210) 3 + 18022495364 GRAPHICS_VERSION_RANGE(1200, 1210) 3 4 22012773006 GRAPHICS_VERSION_RANGE(1200, 1250) 4 5 14014475959 GRAPHICS_VERSION_RANGE(1270, 1271), GRAPHICS_STEP(A0, B0) 5 6 PLATFORM(DG2)