]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/xelp: Wait for AuxCCS invalidation to complete
authorTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Tue, 24 Mar 2026 08:40:11 +0000 (08:40 +0000)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 24 Mar 2026 13:29:11 +0000 (09:29 -0400)
On AuxCCS platforms we need to wait for AuxCCS invalidations to complete.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patch.msgid.link/20260324084018.20353-6-tvrtko.ursulin@igalia.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/instructions/xe_mi_commands.h
drivers/gpu/drm/xe/xe_ring_ops.c
drivers/gpu/drm/xe/xe_ring_ops_types.h

index 29569eff1af3bace4df593ae1935f19d40ea1228..ad7d98f2dbbaf76d0a97fde3dd266c1bbe7f5330 100644 (file)
 #define MI_SET_APPID_SESSION_ID_MASK   REG_GENMASK(6, 0)
 #define MI_SET_APPID_SESSION_ID(x)     REG_FIELD_PREP(MI_SET_APPID_SESSION_ID_MASK, x)
 
+#define MI_SEMAPHORE_WAIT_TOKEN                (__MI_INSTR(0x1c) | XE_INSTR_NUM_DW(5)) /* XeLP+ */
+#define   MI_SEMAPHORE_REGISTER_POLL   REG_BIT(16)
+#define   MI_SEMAPHORE_POLL            REG_BIT(15)
+#define   MI_SEMAPHORE_CMP_OP_MASK     REG_GENMASK(14, 12)
+#define   MI_SEMAPHORE_SAD_EQ_SDD      REG_FIELD_PREP(MI_SEMAPHORE_CMP_OP_MASK, 4)
+
 #endif
index 629e551304be054049d4c831c2c54755242c1253..7551a6acd0763f727a9a606cff7791a6da6f4bd2 100644 (file)
@@ -54,7 +54,14 @@ static int emit_aux_table_inv(struct xe_gt *gt, struct xe_reg reg,
        dw[i++] = MI_LOAD_REGISTER_IMM | MI_LRI_NUM_REGS(1) | MI_LRI_MMIO_REMAP_EN;
        dw[i++] = reg.addr + gt->mmio.adj_offset;
        dw[i++] = AUX_INV;
-       dw[i++] = MI_NOOP;
+       dw[i++] = MI_SEMAPHORE_WAIT_TOKEN |
+                 MI_SEMAPHORE_REGISTER_POLL |
+                 MI_SEMAPHORE_POLL |
+                 MI_SEMAPHORE_SAD_EQ_SDD;
+       dw[i++] = 0;
+       dw[i++] = reg.addr + gt->mmio.adj_offset;
+       dw[i++] = 0;
+       dw[i++] = 0;
 
        return i;
 }
index a42a465ac4382aa206dcb12a726b9cdbcdc0d477..1197fc0bf2af95dc4973498f566db6ab95d1bda9 100644 (file)
@@ -8,7 +8,7 @@
 
 struct xe_sched_job;
 
-#define MAX_JOB_SIZE_DW 72
+#define MAX_JOB_SIZE_DW 74
 #define MAX_JOB_SIZE_BYTES (MAX_JOB_SIZE_DW * 4)
 
 /**