public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH] tests/intel: only check multi-LRC support for parallel submission paths
@ 2026-04-08  7:14 Xin Wang
  2026-04-08 17:27 ` Daniel Charles
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Xin Wang @ 2026-04-08  7:14 UTC (permalink / raw)
  To: igt-dev; +Cc: Xin Wang, Daniel Charles

The previous commit "tests/intel: skip or adjust tests for non-multi-LRC
engine classes" unconditionally guarded balancer test functions with
xe_engine_class_supports_multi_lrc(), causing virtual (non-parallel)
subtests to be skipped on engine classes that have multiple placements
but do not support multi-LRC.

Only parallel submission requires multi-LRC support; virtual balancer
tests should still run whenever num_placements >= 2 regardless of
multi-LRC capability.

Fix this by making the multi-LRC check conditional on the PARALLEL flag
in test_exec(), test_cm(), test_balancer(), and utilization_multi().
Remove the check entirely from test_all_active() which is a pure virtual
test.  In xe_exec_threads, move the filter into the caller threads() so
that VIRTUAL threads are still spawned while PARALLEL threads are skipped
for non-multi-LRC classes.

Fixes: 09d91fcf2961 ("tests/intel: skip or adjust tests for non-multi-LRC engine classes")
Cc: Daniel Charles <daniel.charles@intel.com>
Signed-off-by: Xin Wang <x.wang@intel.com>
---
 tests/intel/xe_drm_fdinfo.c    | 3 ++-
 tests/intel/xe_exec_balancer.c | 8 +++++---
 tests/intel/xe_exec_reset.c    | 3 ++-
 tests/intel/xe_exec_threads.c  | 7 ++++++-
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/tests/intel/xe_drm_fdinfo.c b/tests/intel/xe_drm_fdinfo.c
index 3c113ed5d..8449a4f17 100644
--- a/tests/intel/xe_drm_fdinfo.c
+++ b/tests/intel/xe_drm_fdinfo.c
@@ -673,7 +673,8 @@ utilization_multi(int fd, int gt, int class, unsigned int flags)
 	igt_assert(virtual ^ parallel);
 
 	num_placements = xe_gt_fill_engines_by_class(fd, gt, class, eci);
-	if (num_placements < 2 || !xe_engine_class_supports_multi_lrc(fd, class))
+	if (num_placements < 2 ||
+	    (parallel && !xe_engine_class_supports_multi_lrc(fd, class)))
 		return;
 
 	igt_debug("Target class: %s\n", engine_map[class]);
diff --git a/tests/intel/xe_exec_balancer.c b/tests/intel/xe_exec_balancer.c
index 3c6ec45f1..4aaef7666 100644
--- a/tests/intel/xe_exec_balancer.c
+++ b/tests/intel/xe_exec_balancer.c
@@ -57,7 +57,7 @@ static bool test_all_active(int fd, int gt, int class)
 	int i, num_placements;
 
 	num_placements = xe_gt_fill_engines_by_class(fd, gt, class, eci);
-	if (num_placements < 2 || !xe_engine_class_supports_multi_lrc(fd, class))
+	if (num_placements < 2)
 		return false;
 
 	vm = xe_vm_create(fd, 0, 0);
@@ -187,7 +187,8 @@ test_exec(int fd, int gt, int class, int n_exec_queues, int n_execs,
 	igt_assert_lte(n_exec_queues, MAX_N_EXEC_QUEUES);
 
 	num_placements = xe_gt_fill_engines_by_class(fd, gt, class, eci);
-	if (num_placements < 2 || !xe_engine_class_supports_multi_lrc(fd, class))
+	if (num_placements < 2 ||
+	    ((flags & PARALLEL) && !xe_engine_class_supports_multi_lrc(fd, class)))
 		return false;
 
 	vm = xe_vm_create(fd, 0, 0);
@@ -402,7 +403,8 @@ test_cm(int fd, int gt, int class, int n_exec_queues, int n_execs,
 	igt_assert_lte(n_exec_queues, MAX_N_EXEC_QUEUES);
 
 	num_placements = xe_gt_fill_engines_by_class(fd, gt, class, eci);
-	if (num_placements < 2 || !xe_engine_class_supports_multi_lrc(fd, class))
+	if (num_placements < 2 ||
+	    ((flags & PARALLEL) && !xe_engine_class_supports_multi_lrc(fd, class)))
 		return false;
 
 	vm = xe_vm_create(fd, DRM_XE_VM_CREATE_FLAG_LR_MODE, 0);
diff --git a/tests/intel/xe_exec_reset.c b/tests/intel/xe_exec_reset.c
index 95191139d..66580ea44 100644
--- a/tests/intel/xe_exec_reset.c
+++ b/tests/intel/xe_exec_reset.c
@@ -184,7 +184,8 @@ test_balancer(int fd, int gt, int class, int n_exec_queues, int n_execs,
 		fd = drm_open_driver(DRIVER_XE);
 
 	num_placements = xe_gt_fill_engines_by_class(fd, gt, class, eci);
-	if (num_placements < 2 || !xe_engine_class_supports_multi_lrc(fd, class))
+	if (num_placements < 2 ||
+	    ((flags & PARALLEL) && !xe_engine_class_supports_multi_lrc(fd, class)))
 		return;
 
 	vm = xe_vm_create(fd, 0, 0);
diff --git a/tests/intel/xe_exec_threads.c b/tests/intel/xe_exec_threads.c
index 7b8100c5b..40a6c0c6d 100644
--- a/tests/intel/xe_exec_threads.c
+++ b/tests/intel/xe_exec_threads.c
@@ -85,7 +85,6 @@ test_balancer(int fd, int gt, uint32_t vm, uint64_t addr, uint64_t userptr,
 
 	num_placements = xe_gt_fill_engines_by_class(fd, gt, class, eci);
 	igt_assert_lt(1, num_placements);
-	igt_assert(xe_engine_class_supports_multi_lrc(fd, class));
 
 	bo_size = sizeof(*data) * n_execs;
 	bo_size = xe_bb_size(fd, bo_size);
@@ -1211,6 +1210,12 @@ static void threads(int fd, int flags)
 					continue;
 
 				while (*data_flags >= 0) {
+					if ((*data_flags & PARALLEL) &&
+					    !xe_engine_class_supports_multi_lrc(fd, class)) {
+						data_flags++;
+						continue;
+					}
+
 					threads_data[i].mutex = &mutex;
 					threads_data[i].cond = &cond;
 					if (flags & SHARED_VM)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-04-09 20:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-08  7:14 [PATCH] tests/intel: only check multi-LRC support for parallel submission paths Xin Wang
2026-04-08 17:27 ` Daniel Charles
2026-04-09 13:41   ` Kamil Konieczny
2026-04-09  8:14 ` ✓ Xe.CI.BAT: success for " Patchwork
2026-04-09  8:31 ` ✓ i915.CI.BAT: " Patchwork
2026-04-09  9:25 ` ✓ Xe.CI.FULL: " Patchwork
2026-04-09 20:43 ` ✗ i915.CI.Full: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox