[igt-dev] [PATCH i-g-t v2 15/19] xe/xe_*: add TEST/SUBTEST documentation

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Fri Mar 10 19:41:21 UTC 2023


From: Mauro Carvalho Chehab <mchehab at kernel.org>

Document this IGT test, by looking on IGT BAT testlist and on
on its internal logic. Only some tests here are part of the
Basic Acceptance Test (BAT) group.

Signed-off-by: Mauro Carvalho Chehab <mchehab at kernel.org>
Acked-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
---
 tests/xe/xe_debugfs.c           |  53 ++++---
 tests/xe/xe_evict.c             |  82 +++++++++++
 tests/xe/xe_exec_balancer.c     |   7 +-
 tests/xe/xe_exec_compute_mode.c |   2 +
 tests/xe/xe_exec_reset.c        | 134 ++++++++++++++++++
 tests/xe/xe_exec_threads.c      | 242 ++++++++++++++++++++++++++++++++
 tests/xe/xe_guc_pc.c            |  74 ++++++++++
 tests/xe/xe_mmap.c              |  10 +-
 tests/xe/xe_pm.c                |  61 ++++++++
 tests/xe/xe_prime_self_import.c |  65 ++++++++-
 tests/xe/xe_query.c             |   2 +-
 tests/xe/xe_vm.c                | 199 ++++++++++++++++++++++++++
 12 files changed, 903 insertions(+), 28 deletions(-)

diff --git a/tests/xe/xe_debugfs.c b/tests/xe/xe_debugfs.c
index 60a02cc170..38c8beccc5 100644
--- a/tests/xe/xe_debugfs.c
+++ b/tests/xe/xe_debugfs.c
@@ -23,6 +23,10 @@
 #include <sys/types.h>
 #include <dirent.h>
 
+struct {
+	bool warn_on_not_hit;
+} opt = { 0 };
+
 static int validate_entries(int fd, const char *add_path, const char * const str_val[], int str_cnt)
 {
 	int i;
@@ -53,7 +57,7 @@ static int validate_entries(int fd, const char *add_path, const char * const str
 		}
 		if (hit) {
 			found++;
-		} else {
+		} else if (opt.warn_on_not_hit) {
 			not_found++;
 			igt_warn("no test for: %s/%s\n", path, de->d_name);
 		}
@@ -146,14 +150,9 @@ test_base(int fd)
 }
 
 /**
- * SUBTEST: %s
- * Description: Check %arg[1] debugfs devnodes
+ * SUBTEST: gt
+ * Description: Check all gt debugfs devnodes
  * TODO: add support for ``force_reset`` entries
- *
- * arg[1]:
- *
- * @gt0: gt0
- * @gt1: gt1
  */
 static void
 test_gt(int fd, int gt_id)
@@ -222,9 +221,32 @@ test_forcewake(int fd)
 	close(handle);
 }
 
-igt_main
+const char *help_str =
+	"  -w\t--warn-not-hit Produce warnings if it founds a devfs node without tests";
+
+struct option long_options[] = {
+	{ "--warn-not-hit", no_argument, NULL, 'w'},
+	{ 0, 0, 0, 0 }
+};
+
+static int opt_handler(int option, int option_index, void *input)
 {
+	switch (option) {
+	case 'w':
+		opt.warn_on_not_hit = true;
+		break;
+	default:
+		return IGT_OPT_HANDLER_ERROR;
+	}
+
+	return IGT_OPT_HANDLER_SUCCESS;
+}
+
+igt_main_args("", long_options, help_str, opt_handler, NULL)
+{
+	char devnode[PATH_MAX];
 	int fd;
+	int gt;
 
 	igt_fixture {
 		fd = drm_open_driver(DRIVER_XE);
@@ -236,14 +258,13 @@ igt_main
 		test_base(fd);
 	}
 
-	igt_subtest("gt0") {
-		igt_require(igt_debugfs_exists(fd, "gt0", O_RDONLY));
-		test_gt(fd, 0);
-	}
 
-	igt_subtest("gt1") {
-		igt_require(igt_debugfs_exists(fd, "gt1", O_RDONLY));
-		test_gt(fd, 1);
+	igt_subtest("gt") {
+		for_each_gt(fd, gt) {
+			snprintf(devnode, sizeof(devnode), "gt%d", gt);
+			igt_require(igt_debugfs_exists(fd, devnode, O_RDONLY));
+			test_gt(fd, gt);
+		}
 	}
 
 	igt_subtest("forcewake") {
diff --git a/tests/xe/xe_evict.c b/tests/xe/xe_evict.c
index 6741b07365..edd4b6d2e6 100644
--- a/tests/xe/xe_evict.c
+++ b/tests/xe/xe_evict.c
@@ -3,6 +3,14 @@
  * Copyright © 2021 Intel Corporation
  */
 
+/**
+ * TEST: Check VMA eviction
+ * Category: Software building block
+ * Sub-category: VMA
+ * Functionality: evict
+ * GPU requirements: GPU needs to have dedicated VRAM
+ */
+
 #include "igt.h"
 #include "lib/igt_syncobj.h"
 #include "lib/intel_reg.h"
@@ -450,6 +458,80 @@ static uint64_t calc_bo_size(uint64_t vram_size, int mul, int div)
 	return (ALIGN(vram_size, 0x40000000)  * mul) / div;
 }
 
+/**
+ * SUBTEST: evict-%s
+ * Description:  %arg[1] evict test.
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1]:
+ *
+ * @small:			small
+ * @small-external:		small external
+ * @small-multi-vm:		small multi VM
+ * @large:			large
+ * @large-external:		large external
+ * @large-multi-vm:		large multi VM
+ * @beng-small:			small bind engine
+ * @beng-small-external:	small external bind engine
+ * @beng-small-multi-vm:	small multi VM bind ending
+ * @beng-large:			large bind engine
+ * @beng-large-external:	large external bind engine
+ * @beng-large-multi-vm:	large multi VM bind engine
+ *
+ * @small-cm:			small compute machine
+ * @small-external-cm:		small external compute machine
+ * @small-multi-vm-cm:		small multi VM compute machine
+ * @large-cm:			large compute machine
+ * @large-external-cm:		large external compute machine
+ * @large-multi-vm-cm:		large multi VM compute machine
+ * @beng-small-cm:		small bind engine compute machine
+ * @beng-small-external-cm:	small external bind engine compute machine
+ * @beng-small-multi-vm-cm:	small multi VM bind ending compute machine
+ * @beng-large-cm:		large bind engine compute machine
+ * @beng-large-external-cm:	large external bind engine compute machine
+ * @beng-large-multi-vm-cm:	large multi VM bind engine compute machine
+ *
+ * @threads-small:		threads small
+ * @cm-threads-small:		compute mode threads small
+ * @mixed-threads-small:	mixed threads small
+ * @mixed-many-threads-small:	mixed many threads small
+ * @threads-large:		threads large
+ * @cm-threads-large:		compute mode threads large
+ * @mixed-threads-large:	mixed threads large
+ * @mixed-many-threads-large:	mixed many threads large
+ * @threads-small-multi-vm:	threads small multi vm
+ * @cm-threads-small-multi-vm:	compute mode threads small multi vm
+ * @mixed-threads-small-multi-vm:
+ * 				mixed threads small multi vm
+ * @threads-large-multi-vm:	threads large multi vm
+ * @cm-threads-large-multi-vm:	compute mode threads large multi vm
+ * @mixed-threads-large-multi-vm:
+ *				mixed threads large multi vm
+ * @beng-threads-small:		bind engine threads small
+ * @beng-cm-threads-small:	bind engine compute mode threads small
+ * @beng-mixed-threads-small:	bind engine mixed threads small
+ * @beng-mixed-many-threads-small:
+ *				bind engine mixed many threads small
+ * @beng-threads-large:		bind engine threads large
+ * @beng-cm-threads-large:	bind engine compute mode threads large
+ * @beng-mixed-threads-large:	bind engine mixed threads large
+ * @beng-mixed-many-threads-large:
+ *				bind engine mixed many threads large
+ * @beng-threads-small-multi-vm:
+ *				bind engine threads small multi vm
+ * @beng-cm-threads-small-multi-vm:
+ *				bind engine compute mode threads small multi vm
+ * @beng-mixed-threads-small-multi-vm:
+ *				bind engine mixed threads small multi vm
+ * @beng-threads-large-multi-vm:
+ *				bind engine threads large multi vm
+ * @beng-cm-threads-large-multi-vm:
+ *				bind engine compute mode threads large multi vm
+ * @beng-mixed-threads-large-multi-vm:
+ *				bind engine mixed threads large multi vm
+ */
+
 /*
  * Table driven test that attempts to cover all possible scenarios of eviction
  * (small / large objects, compute mode vs non-compute VMs, external BO or BOs
diff --git a/tests/xe/xe_exec_balancer.c b/tests/xe/xe_exec_balancer.c
index 809dcebb1d..a247b1d268 100644
--- a/tests/xe/xe_exec_balancer.c
+++ b/tests/xe/xe_exec_balancer.c
@@ -366,8 +366,7 @@ test_exec(int fd, int gt, int class, int n_engines, int n_execs,
  *
  * SUBTEST: twice-cm-%s
  * Description: Run compute mode virtual engine arg[1] test twice
- * Run type: FULL
- * TODO: change ``'Run type' == FULL`` to a better category
+ * Run type: BAT
  *
  * SUBTEST: many-cm-%s
  * Description: Run compute mode virtual engine arg[1] test many times
@@ -379,10 +378,10 @@ test_exec(int fd, int gt, int class, int n_engines, int n_execs,
  * Run type: FULL
  * TODO: change ``'Run type' == FULL`` to a better category
  *
+ *
  * SUBTEST: no-exec-cm-%s
  * Description: Run compute mode virtual engine arg[1] no-exec test
- * Run type: FULL
- * TODO: change ``'Run type' == FULL`` to a better category
+ * Run type: BAT
  *
  * arg[1]:
  *
diff --git a/tests/xe/xe_exec_compute_mode.c b/tests/xe/xe_exec_compute_mode.c
index d0cd0e57f8..e65767ae4f 100644
--- a/tests/xe/xe_exec_compute_mode.c
+++ b/tests/xe/xe_exec_compute_mode.c
@@ -67,6 +67,8 @@
  *
  * SUBTEST: many-engines-%s
  * Description: Run %arg[1] compute machine test on many engines
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category*
  *
  * arg[1]:
  *
diff --git a/tests/xe/xe_exec_reset.c b/tests/xe/xe_exec_reset.c
index a5bde252e8..106fe941c1 100644
--- a/tests/xe/xe_exec_reset.c
+++ b/tests/xe/xe_exec_reset.c
@@ -3,6 +3,14 @@
  * Copyright © 2021 Intel Corporation
  */
 
+/**
+ * TEST: Basic tests for execbuf functionality for virtual and parallel engines
+ * Category: Hardware building block
+ * Sub-category: execbuf
+ * Functionality: reset
+ * Test category: functionality test
+ */
+
 #include "igt.h"
 #include "lib/igt_syncobj.h"
 #include "lib/intel_reg.h"
@@ -13,6 +21,12 @@
 #include "xe/xe_spin.h"
 #include <string.h>
 
+/**
+ * SUBTEST: spin
+ * Description: test spin
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
 static void test_spin(int fd, struct drm_xe_engine_class_instance *eci)
 {
 	uint32_t vm;
@@ -88,6 +102,52 @@ static void test_spin(int fd, struct drm_xe_engine_class_instance *eci)
 #define PARALLEL	(0x1 << 6)
 #define CAT_ERROR	(0x1 << 7)
 
+/**
+ * SUBTEST: %s-cancel
+ * Description: Test %arg[1] cancel
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: %s-engine-reset
+ * Description: Test %arg[1] engine reset
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: %s-cat-error
+ * Description: Test %arg[1] cat error
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: %s-gt-reset
+ * Description: Test %arg[1] GT reset
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: virtual-close-fd-no-exec
+ * Description: Test virtual close fd no-exec
+ * Run type: BAT
+ *
+ * SUBTEST: parallel-close-fd-no-exec
+ * Description: Test parallel close fd no-exec
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: %s-close-fd
+ * Description: Test %arg[1] close fd
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: %s-close-engines-close-fd
+ * Description: Test %arg[1] close engines close fd
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1]:
+ *
+ * @virtual:	virtual
+ * @parallel:	parallel
+ */
+
 static void
 test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
 	      unsigned int flags)
@@ -263,6 +323,42 @@ test_balancer(int fd, int gt, int class, int n_engines, int n_execs,
 	xe_vm_destroy(fd, vm);
 }
 
+/**
+ * SUBTEST: cancel
+ * Description: Test cancel
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: engine-reset
+ * Description: Test engine reset
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: cat-error
+ * Description: Test cat error
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: gt-reset
+ * Description: Test GT reset
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: close-fd-no-exec
+ * Description: Test close fd no-exec
+ * Run type: BAT
+ *
+ * SUBTEST: close-fd
+ * Description: Test close fd
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: close-engines-close-fd
+ * Description: Test close engines close fd
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void
 test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
 		 int n_engines, int n_execs, unsigned int flags)
@@ -408,6 +504,37 @@ test_legacy_mode(int fd, struct drm_xe_engine_class_instance *eci,
 	xe_vm_destroy(fd, vm);
 }
 
+/**
+ * SUBTEST: cm-engine-reset
+ * Description: Test compute mode engine reset
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: cm-cat-error
+ * Description: Test compute mode cat-error
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: cm-gt-reset
+ * Description: Test compute mode GT reset
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: cm-close-fd-no-exec
+ * Description: Test compute mode close fd no-exec
+ * Run type: BAT
+ *
+ * SUBTEST: cm-close-fd
+ * Description: Test compute mode close fd
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: cm-close-engines-close-fd
+ * Description: Test compute mode close engines close fd
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void
 test_compute_mode(int fd, struct drm_xe_engine_class_instance *eci,
 		  int n_engines, int n_execs, unsigned int flags)
@@ -638,6 +765,13 @@ static void *gt_reset_thread(void *data)
 	return NULL;
 }
 
+/**
+ * SUBTEST: gt-reset-stress
+ * Description: Stress GT reset
+ * Test category: stress test
+ * Run type: stress
+ *
+ */
 static void
 gt_reset(int fd, int n_threads, int n_sec)
 {
diff --git a/tests/xe/xe_exec_threads.c b/tests/xe/xe_exec_threads.c
index 9601e1a2dc..69055a829b 100644
--- a/tests/xe/xe_exec_threads.c
+++ b/tests/xe/xe_exec_threads.c
@@ -3,6 +3,14 @@
  * Copyright © 2021 Intel Corporation
  */
 
+/**
+ * TEST: Basic tests for execbuf functionality
+ * Category: Hardware building block
+ * Sub-category: execbuf
+ * Functionality: multi-threads
+ * Test category: functionality test
+ */
+
 #include <fcntl.h>
 
 #include "igt.h"
@@ -779,6 +787,240 @@ static void *vm_async_ops_err_thread(void *data)
 	return NULL;
 }
 
+/**
+ * SUBTEST: threads-%s
+ * Description: Run threads %arg[1] test with multi threads
+ * Run type: BAT
+ *
+ * arg[1]:
+ *
+ * @shared-vm-basic:		shared vm basic
+ * @fd-basic:			fd basic
+ * @bal-basic:			bal basic
+ * @cm-basic:			cm basic
+ * @cm-fd-basic:		cm fd basic
+ * @mixed-basic:		mixed basic
+ * @mixed-shared-vm-basic:	mixed shared vm basic
+ * @mixed-fd-basic:		mixed fd basic
+ * @bal-mixed-basic:		bal mixed basic
+ * @bal-mixed-shared-vm-basic:	bal mixed shared vm basic
+ * @bal-mixed-fd-basic:		bal mixed fd basic
+ */
+
+/**
+ * SUBTEST: threads-%s
+ * Description: Run threads %arg[1] test with multi threads
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ * arg[1]:
+ * @basic:
+ *	basic
+ * @userptr:
+ *	userptr
+ * @rebind:
+ *	rebind
+ * @rebind-bindengine:
+ *	rebind bindengine
+ * @userptr-rebind:
+ *	userptr rebind
+ * @userptr-invalidate:
+ *	userptr invalidate
+ * @userptr-invalidate-race:
+ *	userptr invalidate race
+ * @shared-vm-userptr:
+ *	shared vm userptr
+ * @shared-vm-rebind:
+ *	shared vm rebind
+ * @shared-vm-rebind-bindengine:
+ *	shared vm rebind bindengine
+ * @shared-vm-userptr-rebind:
+ *	shared vm userptr rebind
+ * @shared-vm-rebind-err:
+ *	shared vm rebind err
+ * @shared-vm-userptr-rebind-err:
+ *	shared vm userptr rebind err
+ * @shared-vm-userptr-invalidate:
+ *	shared vm userptr invalidate
+ * @shared-vm-userptr-invalidate-race:
+ *	shared vm userptr invalidate race
+ * @fd-userptr:
+ *	fd userptr
+ * @fd-rebind:
+ *	fd rebind
+ * @fd-userptr-rebind:
+ *	fd userptr rebind
+ * @fd-userptr-invalidate:
+ *	fd userptr invalidate
+ * @fd-userptr-invalidate-race:
+ *	fd userptr invalidate race
+ * @hang-basic:
+ *	hang basic
+  * @hang-userptr:
+ *	hang userptr
+ * @hang-rebind:
+ *	hang rebind
+ * @hang-userptr-rebind:
+ *	hang userptr rebind
+ * @hang-userptr-invalidate:
+ *	hang userptr invalidate
+ * @hang-userptr-invalidate-race:
+ *	hang userptr invalidate race
+ * @hang-shared-vm-basic:
+ *	hang shared vm basic
+ * @hang-shared-vm-userptr:
+ *	hang shared vm userptr
+ * @hang-shared-vm-rebind:
+ *	hang shared vm rebind
+ * @hang-shared-vm-userptr-rebind:
+ *	hang shared vm userptr rebind
+ * @hang-shared-vm-rebind-err:
+ *	hang shared vm rebind err
+ * @hang-shared-vm-userptr-rebind-err:
+ *	hang shared vm userptr rebind err
+ * @hang-shared-vm-userptr-invalidate:
+ *	hang shared vm userptr invalidate
+ * @hang-shared-vm-userptr-invalidate-race:
+ *	hang shared vm userptr invalidate race
+ * @hang-fd-basic:
+ *	hang fd basic
+ * @hang-fd-userptr:
+ *	hang fd userptr
+ * @hang-fd-rebind:
+ *	hang fd rebind
+ * @hang-fd-userptr-rebind:
+ *	hang fd userptr rebind
+ * @hang-fd-userptr-invalidate:
+ *	hang fd userptr invalidate
+ * @hang-fd-userptr-invalidate-race:
+ *	hang fd userptr invalidate race
+ * @bal-userptr:
+ *	balancer userptr
+ * @bal-rebind:
+ *	balancer rebind
+ * @bal-userptr-rebind:
+ *	balancer userptr rebind
+ * @bal-userptr-invalidate:
+ *	balancer userptr invalidate
+ * @bal-userptr-invalidate-race:
+ *	balancer userptr invalidate race
+ * @bal-shared-vm-basic:
+ *	balancer shared vm basic
+ * @bal-shared-vm-userptr:
+ *	balancer shared vm userptr
+ * @bal-shared-vm-rebind:
+ *	balancer shared vm rebind
+ * @bal-shared-vm-userptr-rebind:
+ *	balancer shared vm userptr rebind
+ * @bal-shared-vm-userptr-invalidate:
+ *	balancer shared vm userptr invalidate
+ * @bal-shared-vm-userptr-invalidate-race:
+ *	balancer shared vm userptr invalidate race
+ * @bal-fd-basic:
+ *	balancer fd basic
+ * @bal-fd-userptr:
+ *	balancer fd userptr
+ * @bal-fd-rebind:
+ *	balancer fd rebind
+ * @bal-fd-userptr-rebind:
+ *	balancer fd userptr rebind
+ * @bal-fd-userptr-invalidate:
+ *	balancer fd userptr invalidate
+ * @bal-fd-userptr-invalidate-race:
+ *	balancer fd userptr invalidate race
+ * @cm-userptr:
+ *	compute mode userptr
+ * @cm-rebind:
+ *	compute mode rebind
+ * @cm-userptr-rebind:
+ *	compute mode userptr rebind
+ * @cm-userptr-invalidate:
+ *	compute mode userptr invalidate
+ * @cm-userptr-invalidate-race:
+ *	compute mode userptr invalidate race
+ * @cm-shared-vm-basic:
+ *	compute mode shared vm basic
+ * @cm-shared-vm-userptr:
+ *	compute mode shared vm userptr
+ * @cm-shared-vm-rebind:
+ *	compute mode shared vm rebind
+ * @cm-shared-vm-userptr-rebind:
+ *	compute mode shared vm userptr rebind
+ * @cm-shared-vm-userptr-invalidate:
+ *	compute mode shared vm userptr invalidate
+ * @cm-shared-vm-userptr-invalidate-race:
+ *	compute mode shared vm userptr invalidate race
+ * @cm-fd-userptr:
+ *	compute mode fd userptr
+ * @cm-fd-rebind:
+ *	compute mode fd rebind
+ * @cm-fd-userptr-rebind:
+ *	compute mode fd userptr rebind
+ * @cm-fd-userptr-invalidate:
+ *	compute mode fd userptr invalidate
+ * @cm-fd-userptr-invalidate-race:
+ *	compute mode fd userptr invalidate race
+ * @mixed-userptr:
+ *	mixed userptr
+ * @mixed-rebind:
+ *	mixed rebind
+ * @mixed-userptr-rebind:
+ *	mixed userptr rebind
+ * @mixed-userptr-invalidate:
+ *	mixed userptr invalidate
+ * @mixed-userptr-invalidate-race:
+ *	mixed userptr invalidate race
+ * @mixed-shared-vm-userptr:
+ *	mixed shared vm userptr
+ * @mixed-shared-vm-rebind:
+ *	mixed shared vm rebind
+ * @mixed-shared-vm-userptr-rebind:
+ *	mixed shared vm userptr rebind
+ * @mixed-shared-vm-userptr-invalidate:
+ *	mixed shared vm userptr invalidate
+ * @mixed-shared-vm-userptr-invalidate-race:
+ *	mixed shared vm userptr invalidate race
+ * @mixed-fd-userptr:
+ *	mixed fd userptr
+ * @mixed-fd-rebind:
+ *	mixed fd rebind
+ * @mixed-fd-userptr-rebind:
+ *	mixed fd userptr rebind
+ * @mixed-fd-userptr-invalidate:
+ *	mixed fd userptr invalidate
+ * @mixed-fd-userptr-invalidate-race:
+ *	mixed fd userptr invalidate race
+ * @bal-mixed-userptr:
+ *	balancer mixed userptr
+ * @bal-mixed-rebind:
+ *	balancer mixed rebind
+ * @bal-mixed-userptr-rebind:
+ *	balancer mixed userptr rebind
+ * @bal-mixed-userptr-invalidate:
+ *	balancer mixed userptr invalidate
+ * @bal-mixed-userptr-invalidate-race:
+ *	balancer mixed userptr invalidate race
+ * @bal-mixed-shared-vm-userptr:
+ *	balancer mixed shared vm userptr
+ * @bal-mixed-shared-vm-rebind:
+ *	balancer mixed shared vm rebind
+ * @bal-mixed-shared-vm-userptr-rebind:
+ *	balancer mixed shared vm userptr rebind
+ * @bal-mixed-shared-vm-userptr-invalidate:
+ *	balancer mixed shared vm userptr invalidate
+ * @bal-mixed-shared-vm-userptr-invalidate-race:
+ *	balancer mixed shared vm userptr invalidate race
+ * @bal-mixed-fd-userptr:
+ *	balancer mixed fd userptr
+ * @bal-mixed-fd-rebind:
+ *	balancer mixed fd rebind
+ * @bal-mixed-fd-userptr-rebind:
+ *	balancer mixed fd userptr rebind
+ * @bal-mixed-fd-userptr-invalidate:
+ *	balancer mixed fd userptr invalidate
+ * @bal-mixed-fd-userptr-invalidate-race:
+ *	balancer mixed fd userptr invalidate race
+ */
+
 static void threads(int fd, int flags)
 {
 	struct thread_data *threads_data;
diff --git a/tests/xe/xe_guc_pc.c b/tests/xe/xe_guc_pc.c
index 3ed6d36ff0..3f520d7bf4 100644
--- a/tests/xe/xe_guc_pc.c
+++ b/tests/xe/xe_guc_pc.c
@@ -3,6 +3,14 @@
  * Copyright © 2022 Intel Corporation
  */
 
+/**
+ * TEST: Test GuC frequency request functionality
+ * Category: Firmware building block
+ * Sub-category: GuC
+ * Functionality: frequency request
+ * Test category: functionality test
+ */
+
 #include "igt.h"
 #include "lib/igt_syncobj.h"
 #include "igt_sysfs.h"
@@ -147,6 +155,13 @@ static uint32_t get_freq(int sysfs, int gt_id, const char *freq_name)
 	return freq;
 }
 
+
+/**
+ * SUBTEST: freq_basic_api
+ * Description: Test basic get and set frequency API
+ * Run type: BAT
+ */
+
 static void test_freq_basic_api(int sysfs, int gt_id)
 {
 	uint32_t rpn = get_freq(sysfs, gt_id, "rpn");
@@ -180,6 +195,17 @@ static void test_freq_basic_api(int sysfs, int gt_id)
 	igt_assert(get_freq(sysfs, gt_id, "max") == rp0);
 }
 
+/**
+ * SUBTEST: freq_fixed_idle
+ * Description: Test fixed frequency request with engine in idle state
+ * Run type: BAT
+ *
+ * SUBTEST: freq_fixed_exec
+ * Description: Test fixed frequency request when engine is doing some work
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_freq_fixed(int sysfs, int gt_id)
 {
 	uint32_t rpn = get_freq(sysfs, gt_id, "rpn");
@@ -218,6 +244,17 @@ static void test_freq_fixed(int sysfs, int gt_id)
 	igt_debug("Finished testing fixed request\n");
 }
 
+/**
+ * SUBTEST: freq_range_idle
+ * Description: Test range frequency request with engine in idle state
+ * Run type: BAT
+ *
+ * SUBTEST: freq_range_exec
+ * Description: Test range frequency request when engine is doing some work
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_freq_range(int sysfs, int gt_id)
 {
 	uint32_t rpn = get_freq(sysfs, gt_id, "rpn");
@@ -237,6 +274,13 @@ static void test_freq_range(int sysfs, int gt_id)
 	igt_debug("Finished testing range request\n");
 }
 
+/**
+ * SUBTEST: freq_low_max
+ * Description: Test frequency request to minimal and maximum values
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_freq_low_max(int sysfs, int gt_id)
 {
 	uint32_t rpn = get_freq(sysfs, gt_id, "rpn");
@@ -253,6 +297,13 @@ static void test_freq_low_max(int sysfs, int gt_id)
 	igt_assert(get_freq(sysfs, gt_id, "act") == rpe);
 }
 
+/**
+ * SUBTEST: freq_suspend
+ * Description: Check frequency after returning from suspend
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_suspend(int sysfs, int gt_id)
 {
 	uint32_t rpn = get_freq(sysfs, gt_id, "rpn");
@@ -269,6 +320,18 @@ static void test_suspend(int sysfs, int gt_id)
 	igt_assert(get_freq(sysfs, gt_id, "max") == rpn);
 }
 
+/**
+ * SUBTEST: freq_reset
+ * Description: test frequency reset only once
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: freq_reset_multiple
+ * Description: test frequency reset multiple times
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_reset(int fd, int sysfs, int gt_id, int cycles)
 {
 	uint32_t rpn = get_freq(sysfs, gt_id, "rpn");
@@ -291,6 +354,17 @@ static void test_reset(int fd, int sysfs, int gt_id, int cycles)
 	}
 }
 
+
+/**
+ * SUBTEST: rc6_on_idle
+ * Description: check if GPU is in RC6 on idle
+ * Run type: BAT
+ *
+ * SUBTEST: rc0_on_exec
+ * Description: check if GPU is in RC0 on when doing some work
+ * Run type: BAT
+ */
+
 static bool in_rc6(int sysfs, int gt_id)
 {
 	char path[32];
diff --git a/tests/xe/xe_mmap.c b/tests/xe/xe_mmap.c
index f2d73fd1ac..9dce6adbe2 100644
--- a/tests/xe/xe_mmap.c
+++ b/tests/xe/xe_mmap.c
@@ -20,17 +20,21 @@
 #include <string.h>
 
 
+/**
+ * SUBTEST: system
+ * Description: Test mmap on system memory
+ */
+
 /**
  * SUBTEST: %s
- * Description: Test mmap on %s memory
+ * Description: Test mmap on %arg[1] memory
+ * GPU requirements: GPU needs to have dedicated VRAM
  *
  * arg[1]:
  *
- * @system:		system
  * @vram:		vram
  * @vram-system:	system vram
  */
-
 static void
 test_mmap(int fd, uint32_t flags)
 {
diff --git a/tests/xe/xe_pm.c b/tests/xe/xe_pm.c
index cf4fb8fad2..eb752b0208 100644
--- a/tests/xe/xe_pm.c
+++ b/tests/xe/xe_pm.c
@@ -3,6 +3,15 @@
  * Copyright © 2022 Intel Corporation
  */
 
+/**
+ * TEST: Check Power Management functionality
+ * Category: Software building block
+ * Sub-category: power management
+ * Test category: functionality test
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 #include <limits.h>
 #include <fcntl.h>
 #include <string.h>
@@ -141,6 +150,58 @@ static bool out_of_d3(device_t device, enum igt_acpi_d_state state)
 	return true;
 }
 
+/**
+ * SUBTEST: %s-basic
+ * Description: set GPU state to %arg[1] and test suspend/autoresume
+ * GPU requirements: D3 feature should be supported
+ *
+ * SUBTEST: %s-basic-exec
+ * Description: test exec on %arg[1] state once without RPM
+ * GPU requirements: D3 feature should be supported
+ *
+ * SUBTEST: %s-multiple-execs
+ * Description: test exec on %arg[1] state multiple times without RPM
+ * GPU requirements: D3 feature should be supported
+ *
+ * arg[1]:
+ *
+ * @s2idle:	s2idle
+ * @s3:		s3
+ * @s4:		s4
+ * @d3hot:	d3hot
+ * @d3cold:	d3cold
+ */
+
+/**
+ * SUBTEST: %s-exec-after
+ * Description: suspend/autoresume on %arg[1] state and exec after RPM
+ *
+ * arg[1]:
+ *
+ * @s2idle:	s2idle
+ * @s3:		s3
+ * @s4:		s4
+ */
+
+/**
+ * SUBTEST: %s-%s-basic-exec
+ * Description:
+ *	Setup GPU on %arg[2] state then test exec on %arg[1] state
+ * 	without RPM
+ * GPU requirements: D3 feature should be supported
+ *
+ * arg[1]:
+ *
+ * @s2idle:	s2idle
+ * @s3:		s3
+ * @s4:		s4
+ *
+ * arg[2]:
+ *
+ * @d3hot:	d3hot
+ * @d3cold:	d3cold
+ */
+
 static void
 test_exec(device_t device, struct drm_xe_engine_class_instance *eci,
 	  int n_engines, int n_execs, enum igt_suspend_state s_state,
diff --git a/tests/xe/xe_prime_self_import.c b/tests/xe/xe_prime_self_import.c
index 2a8bb91205..5710cff92c 100644
--- a/tests/xe/xe_prime_self_import.c
+++ b/tests/xe/xe_prime_self_import.c
@@ -25,10 +25,15 @@
  *    Matthew Brost <matthew.brost at intel.com>
  */
 
-/*
- * Testcase: Check whether prime import/export works on the same device
+/**
+ * TEST: Check whether prime import/export works on the same device
+ * Category: Software building block
+ * Sub-category: drm prime
+ * Test category: functionality test
  *
- * ... but with different fds, i.e. the wayland usecase.
+ * Description:
+ *	Check whether prime import/export works on the same device
+ *	but with different fds, i.e. the wayland usecase.
  */
 
 #include "igt.h"
@@ -83,6 +88,12 @@ check_bo(int fd1, uint32_t handle1, int fd2, uint32_t handle2)
 	munmap(ptr2, BO_SIZE);
 }
 
+/**
+ * SUBTEST: basic-with_fd_dup
+ * Description: basic prime import/export with fd_dup
+ * Run type: BAT
+ */
+
 static void test_with_fd_dup(void)
 {
 	int fd1, fd2;
@@ -115,6 +126,13 @@ static void test_with_fd_dup(void)
 	close(fd2);
 }
 
+/**
+ * SUBTEST: basic-with_two_bos
+ * Description: basic prime import/export with two BOs
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_with_two_bos(void)
 {
 	int fd1, fd2;
@@ -152,6 +170,13 @@ static void test_with_two_bos(void)
 	close(fd2);
 }
 
+/**
+ * SUBTEST: basic-with_one_bo_two_files
+ * Description: basic prime import/export with one BO and two files
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_with_one_bo_two_files(void)
 {
 	int fd1, fd2;
@@ -183,6 +208,12 @@ static void test_with_one_bo_two_files(void)
 	close(dma_buf_fd2);
 }
 
+/**
+ * SUBTEST: basic-with_one_bo
+ * Description: basic prime import/export with one BO
+ * Run type: BAT
+ */
+
 static void test_with_one_bo(void)
 {
 	int fd1, fd2;
@@ -251,7 +282,13 @@ static void *thread_fn_reimport_vs_close(void *p)
 	return (void *)0;
 }
 
-static void test_reimport_close_race(void)
+/**
+ * SUBTEST: reimport-vs-gem_close-race
+ * Description: Reimport versus gem_close race
+ * Run type: BAT
+ */
+
+ static void test_reimport_close_race(void)
 {
 	pthread_t *threads;
 	int r, i, num_threads;
@@ -342,6 +379,12 @@ static void *thread_fn_export_vs_close(void *p)
 	return (void *)0;
 }
 
+/**
+ * SUBTEST: export-vs-gem_close-race
+ * Description: Export versus gem_close race test
+ * Run type: BAT
+ */
+
 static void test_export_close_race(void)
 {
 	pthread_t *threads;
@@ -396,6 +439,13 @@ static void test_export_close_race(void)
 	igt_assert_eq(obj_count, 0);
 }
 
+/**
+ * SUBTEST: basic-llseek-size
+ * Description: basic BO llseek size test
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_llseek_size(void)
 {
 	int fd, i;
@@ -424,6 +474,13 @@ static void test_llseek_size(void)
 	close(fd);
 }
 
+/**
+ * SUBTEST: basic-llseek-bad
+ * Description: basid bad BO llseek size test
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void test_llseek_bad(void)
 {
 	int fd;
diff --git a/tests/xe/xe_query.c b/tests/xe/xe_query.c
index c107f9936a..b5b78517ce 100644
--- a/tests/xe/xe_query.c
+++ b/tests/xe/xe_query.c
@@ -193,7 +193,7 @@ test_query_engines(int fd)
 /**
  * SUBTEST: query-mem-usage
  * Description: Display memory information like memory class, size
- * and alignment.
+ *	and alignment.
  */
 static void
 test_query_mem_usage(int fd)
diff --git a/tests/xe/xe_vm.c b/tests/xe/xe_vm.c
index f3dd926b24..c8c3a804e9 100644
--- a/tests/xe/xe_vm.c
+++ b/tests/xe/xe_vm.c
@@ -3,6 +3,13 @@
  * Copyright © 2021 Intel Corporation
  */
 
+/**
+ * TEST: Check if VMA functionality is working
+ * Category: Software building block
+ * Sub-category: VMA
+ * Test category: functionality test
+ */
+
 #include "igt.h"
 #include "lib/igt_syncobj.h"
 #include "lib/intel_reg.h"
@@ -72,6 +79,12 @@ write_dwords(int fd, uint32_t vm, int n_dwords, uint64_t *addrs)
 	xe_engine_destroy(fd, engine);
 }
 
+/**
+ * SUBTEST: scratch
+ * Description: Test scratch page creation and write
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
 
 static void
 test_scratch(int fd)
@@ -188,6 +201,13 @@ uint64_t addrs_57b[] = {
 	0x1fffffffffffff4ull,
 };
 
+/**
+ * SUBTEST: bind-once
+ * Description: bind once on one BO
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void
 test_bind_once(int fd)
 {
@@ -198,6 +218,13 @@ test_bind_once(int fd)
 			   1, &addr);
 }
 
+/**
+ * SUBTEST: bind-one-bo-many-times
+ * Description: bind many times on one BO
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void
 test_bind_one_bo_many_times(int fd)
 {
@@ -211,6 +238,13 @@ test_bind_one_bo_many_times(int fd)
 			   addrs_size, addrs);
 }
 
+/**
+ * SUBTEST: bind-one-bo-many-times-many-vm
+ * Description: Test bind many times and many VM on one BO
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void
 test_bind_one_bo_many_times_many_vm(int fd)
 {
@@ -222,6 +256,15 @@ test_bind_one_bo_many_times_many_vm(int fd)
 	__test_bind_one_bo(fd, 0, addrs_size, addrs);
 }
 
+/**
+ * SUBTEST: unbind-all-%d-vmas
+ * Description: Test unbind all with %arg[1] VMAs
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1].values: 2, 8
+ */
+
 static void unbind_all(int fd, int n_vmas)
 {
 	uint32_t bo, bo_size = xe_get_default_alignment(fd);
@@ -259,6 +302,18 @@ struct vm_thread_data {
 	bool destroy;
 };
 
+/**
+ * SUBTEST: vm-async-ops-err
+ * Description: Test VM async ops error
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: vm-async-ops-err-destroy
+ * Description: Test VM async ops error destroy
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
+
 static void *vm_async_ops_err_thread(void *data)
 {
 	struct vm_thread_data *args = data;
@@ -413,6 +468,15 @@ static void vm_async_ops_err(int fd, bool destroy)
 	pthread_join(thread.thread, NULL);
 }
 
+/**
+ * SUBTEST: shared-%s-page
+ * Description: Test shared arg[1] page
+ * Run type: BAT
+ *
+ * arg[1].values: pte, pde, pde2, pde3
+ */
+
+
 struct shared_pte_page_data {
 	uint32_t batch[16];
 	uint64_t pad;
@@ -588,6 +652,13 @@ shared_pte_page(int fd, struct drm_xe_engine_class_instance *eci, int n_bo,
 	xe_vm_destroy(fd, vm);
 }
 
+
+/**
+ * SUBTEST: bind-engines-independent
+ * Description: Test independent bind engines
+ * Run type: BAT
+ */
+
 static void
 test_bind_engines_independent(int fd, struct drm_xe_engine_class_instance *eci)
 {
@@ -722,6 +793,28 @@ test_bind_engines_independent(int fd, struct drm_xe_engine_class_instance *eci)
 
 #define BIND_ARRAY_BIND_ENGINE_FLAG	(0x1 << 0)
 
+
+/**
+ * SUBTEST: bind-array-twice
+ * Description: Test bind array twice
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: bind-array-many
+ * Description: Test bind array many times
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: bind-array-engine-twice
+ * Description: Test bind array engine twice
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * SUBTEST: bind-array-engine-many
+ * Description: Test bind array engine many times
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ */
 static void
 test_bind_array(int fd, struct drm_xe_engine_class_instance *eci, int n_execs,
 		unsigned int flags)
@@ -841,6 +934,59 @@ test_bind_array(int fd, struct drm_xe_engine_class_instance *eci, int n_execs,
 #define LARGE_BIND_FLAG_SPLIT		(0x1 << 1)
 #define LARGE_BIND_FLAG_USERPTR		(0x1 << 2)
 
+/**
+ * SUBTEST: %s-%ld
+ * Description: Test %arg[1] with %arg[2] bind size
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1]:
+ *
+ * @large-binds: large-binds
+ * @large-split-binds: large-split-binds
+ * @large-misaligned-binds: large-misaligned-binds
+ * @large-split-misaligned-binds: large-split-misaligned-binds
+ * @large-userptr-binds: large-userptr-binds
+ * @large-userptr-split-binds: large-userptr-split-binds
+ * @large-userptr-misaligned-binds: large-userptr-misaligned-binds
+ * @large-userptr-split-misaligned-binds: large-userptr-split-misaligned-binds
+ *
+ * arg[2].values: 2097152, 4194304, 8388608, 16777216, 33554432
+ * arg[2].values: 67108864, 134217728, 268435456, 536870912, 1073741824
+ * arg[2].values: 2147483648
+ */
+
+/**
+ *
+ * SUBTEST: %s-%ld
+ * Description: Test %arg[1] with %arg[2] bind size
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1]:
+ *
+ * @mixed-binds: mixed-binds
+ * @mixed-misaligned-binds: mixed-misaligned-binds
+ *
+ * arg[2].values: 3145728, 1611661312
+ */
+
+/**
+ *
+ * SUBTEST: %s-%ld
+ * Description: Test %arg[1] with %arg[2] bind size
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1]:
+ *
+ * @mixed-userptr-binds: mixed-userptr-binds
+ * @mixed-userptr-misaligned-binds: mixed-userptr-misaligned-binds
+ * @mixed-userptr-binds: mixed-userptr-binds
+ *
+ * arg[2].values: 3145728, 1611661312
+ */
+
 static void
 test_large_binds(int fd, struct drm_xe_engine_class_instance *eci,
 		 int n_engines, int n_execs, size_t bo_size,
@@ -1061,6 +1207,59 @@ static void *hammer_thread(void *tdata)
 #define MUNMAP_FLAG_INVALIDATE		(0x1 << 1)
 #define MUNMAP_FLAG_HAMMER_FIRST_PAGE	(0x1 << 2)
 
+
+/**
+ * SUBTEST: munmap-style-unbind-%s
+ * Description: Test munmap style unbind with %arg[1]
+ *
+ * arg[1]:
+ *
+ * @one-partial:			one partial
+ * @end:				end
+ * @front:				front
+ * @userptr-one-partial:		userptr one partial
+ * @userptr-end:			userptr end
+ * @userptr-front:			userptr front
+ * @userptr-inval-end:			userptr inval end
+ * @userptr-inval-front:		userptr inval front
+ * Run type: BAT
+ */
+
+/**
+ * SUBTEST: munmap-style-unbind-%s
+ * Description: Test munmap style unbind with %arg[1]
+ * Run type: FULL
+ * TODO: change ``'Run type' == FULL`` to a better category
+ *
+ * arg[1]:
+ *
+ * @all:				all
+ * @either-side-partial:		either side partial
+ * @either-side-partial-hammer:		either side partial hammer
+ * @either-side-full:			either side full
+ * @many-all:				many all
+ * @many-either-side-partial:		many either side partial
+ * @many-either-side-partial-hammer:	many either side partial hammer
+ * @many-either-side-full:		many either side full
+ * @many-end:				many end
+ * @many-front:				many front
+ * @userptr-all:			userptr all
+ * @userptr-either-side-partial:	userptr either side partial
+ * @userptr-either-side-full:		userptr either side full
+ * @userptr-many-all:			userptr many all
+ * @userptr-many-either-side-full:	userptr many either side full
+ * @userptr-many-end:			userptr many end
+ * @userptr-many-front:			userptr many front
+ * @userptr-inval-either-side-full:	userptr inval either side full
+ * @userptr-inval-many-all:		userptr inval many all
+ * @userptr-inval-many-either-side-partial:
+ *					userptr inval many either side partial
+ * @userptr-inval-many-either-side-full:
+ *					userptr inval many either side full
+ * @userptr-inval-many-end:		userptr inval many end
+ * @userptr-inval-many-front:		userptr inval many front
+ */
+
 static void
 test_munmap_style_unbind(int fd, struct drm_xe_engine_class_instance *eci,
 			 int bo_n_pages, int n_binds,
-- 
2.34.1



More information about the igt-dev mailing list