[PATCH i-g-t 1/2] lib/gpu_cmds: Correct number of threads in CFE_STATE instruction

Dominik Grzegorzek dominik.grzegorzek at intel.com
Mon Sep 23 07:46:39 UTC 2024


Since xe2 there was a change in CFE_STATE instruction format.
Field describing maximal number of threads now has type of u16,
not u16-1 as it used to have.

Reported-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
---
 lib/gpu_cmds.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/gpu_cmds.c b/lib/gpu_cmds.c
index c44b24c79..2638e3791 100644
--- a/lib/gpu_cmds.c
+++ b/lib/gpu_cmds.c
@@ -992,6 +992,7 @@ void
 xehp_emit_cfe_state(struct intel_bb *ibb, uint32_t threads)
 {
 	bool dfeud = CFE_CAN_DISABLE_FUSED_EU_DISPATCH(ibb->devid);
+	bool u16minus1 = intel_graphics_ver(ibb->devid) < IP_VER(20, 0);
 
 	intel_bb_out(ibb, XEHP_CFE_STATE | (6 - 2));
 
@@ -1001,7 +1002,8 @@ xehp_emit_cfe_state(struct intel_bb *ibb, uint32_t threads)
 
 #define _LEGACY_MODE (1 << 6)
 	/* number of threads & urb entries */
-	intel_bb_out(ibb, (max_t(threads, threads, 64) - 1) << 16 | (dfeud ? _LEGACY_MODE : 0));
+	threads = max_t(threads, threads, 64);
+	intel_bb_out(ibb, (u16minus1 ? threads - 1 : threads) << 16 | (dfeud ? _LEGACY_MODE : 0));
 
 	intel_bb_out(ibb, 0);
 	intel_bb_out(ibb, 0);
-- 
2.34.1



More information about the igt-dev mailing list