[PATCH i-g-t 2/2] tests/xe_eudebug: Use library helper to enable ccs_mode

Dominik Grzegorzek dominik.grzegorzek at intel.com
Mon Dec 16 13:11:37 UTC 2024


igt_require call within ccs_mode_all_enginesi() when
condition was not met left fd variable uninitialized, what
caused xe_eudebug_enable in the cleanup fixure to fail like below:

Test assertion failure function enable_getset, file ../lib/xe/xe_eudebug.c:1795:
(xe_eudebug:23606) xe/xe_eudebug-CRITICAL: Failed assertion: fstat(fd, &st) == 0
(xe_eudebug:23606) xe/xe_eudebug-CRITICAL: Last errno: 9, Bad file descriptor
(xe_eudebug:23606) xe/xe_eudebug-CRITICAL: error: -1 != 0
Stack trace:
  #0 ../lib/igt_core.c:2051 __igt_fail_assert()
  #1 ../lib/xe/xe_eudebug.c:1851 xe_eudebug_enable()
  #2 ../tests/intel/xe_eudebug.c:2870 __igt_unique____real_main2757()
  #3 ../tests/intel/xe_eudebug.c:2757 main()
  #4 ../sysdeps/nptl/libc_start_call_main.h:58 __libc_start_call_main()
  #5 ../csu/libc-start.c:128 __libc_start_main@@GLIBC_2.34()

Fix that by using xe_sysfs_enable_css_mode library function which opens
drm fd before calling igt_require. As here, move the check outside the
fixture to simplify code.

Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
---
 tests/intel/xe_eudebug.c | 38 ++++----------------------------------
 1 file changed, 4 insertions(+), 34 deletions(-)

diff --git a/tests/intel/xe_eudebug.c b/tests/intel/xe_eudebug.c
index 22b0da658..c566d0980 100644
--- a/tests/intel/xe_eudebug.c
+++ b/tests/intel/xe_eudebug.c
@@ -26,6 +26,7 @@
 #include "xe/xe_eudebug.h"
 #include "xe/xe_ioctl.h"
 #include "xe/xe_query.h"
+#include "xe/xe_util.h"
 
 /**
  * SUBTEST: sysfs-toggle
@@ -2729,31 +2730,6 @@ static void test_basic_exec_queues_enable(int fd)
 	xe_vm_destroy(fd, vm_non_lr);
 }
 
-static void ccs_mode_all_engines(int num_gt)
-{
-	int fd, gt, gt_fd, num_slices, ccs_mode;
-	int num_gts_with_ccs_mode = 0;
-
-	for (gt = 0; gt < num_gt; gt++) {
-		fd = drm_open_driver(DRIVER_XE);
-		gt_fd = xe_sysfs_gt_open(fd, gt);
-		close(fd);
-
-		if (igt_sysfs_scanf(gt_fd, "num_cslices", "%u", &num_slices) <= 0)
-			continue;
-
-		num_gts_with_ccs_mode++;
-
-		igt_assert(igt_sysfs_printf(gt_fd, "ccs_mode", "%u", num_slices) > 0);
-		igt_assert(igt_sysfs_scanf(gt_fd, "ccs_mode", "%u", &ccs_mode) > 0);
-		igt_assert(num_slices == ccs_mode);
-		close(gt_fd);
-	}
-
-	errno = 0;
-	igt_require(num_gts_with_ccs_mode > 0);
-}
-
 igt_main
 {
 	bool was_enabled;
@@ -2856,15 +2832,9 @@ igt_main
 	igt_subtest("discovery-empty-clients")
 		test_empty_discovery(fd, DISCOVERY_DESTROY_RESOURCES, 16);
 
-	igt_subtest_group {
-		igt_fixture {
-			drm_close_driver(fd);
-			ccs_mode_all_engines(gt_count);
-			fd = drm_open_driver(DRIVER_XE);
-		}
-
-		igt_subtest("exec-queue-placements")
-			test_basic_sessions(fd, EXEC_QUEUES_PLACEMENTS, 1, true);
+	igt_subtest("exec-queue-placements") {
+		xe_sysfs_enable_ccs_mode(&fd);
+		test_basic_sessions(fd, EXEC_QUEUES_PLACEMENTS, 1, true);
 	}
 
 	igt_fixture {
-- 
2.34.1



More information about the igt-dev mailing list