[igt-dev] [PATCH i-g-t 1/2] tests/i915/gem_sync: Added test description for test case.

sai.gowtham.ch at intel.com sai.gowtham.ch at intel.com
Tue Jun 28 04:25:58 UTC 2022


From: Sai Gowtham Ch <sai.gowtham.ch at intel.com>

Added test description for test and to all the subtests that are
available.

Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
Signed-off-by: Sai Gowtham Ch <sai.gowtham.ch at intel.com>
---
 tests/i915/gem_sync.c | 92 ++++++++++++++++++++++++++++++++-----------
 1 file changed, 69 insertions(+), 23 deletions(-)

diff --git a/tests/i915/gem_sync.c b/tests/i915/gem_sync.c
index 8c435845..412a785d 100644
--- a/tests/i915/gem_sync.c
+++ b/tests/i915/gem_sync.c
@@ -1208,32 +1208,60 @@ igt_main
 			     int num_children, int timeout);
 		int num_children;
 		int timeout;
+		const char *describe;
 	} all[] = {
-		{ "basic-each", sync_ring, 1, 2 },
-		{ "basic-store-each", store_ring, 1, 2 },
-		{ "basic-many-each", store_many, 0, 2 },
-		{ "switch-each", switch_ring, 1, 20 },
-		{ "forked-switch-each", switch_ring, ncpus, 20 },
-		{ "forked-each", sync_ring, ncpus, 20 },
-		{ "forked-store-each", store_ring, ncpus, 20 },
-		{ "active-each", active_ring, 0, 20 },
-		{ "wakeup-each", wakeup_ring, 20, 1 },
-		{ "active-wakeup-each", active_wakeup_ring, 20, 1 },
-		{ "double-wakeup-each", wakeup_ring, 20, 2 },
+		{ "basic-each", sync_ring, 1, 2,
+			"Check synchronisation of ring" },
+		{ "basic-store-each", store_ring, 1, 2,
+			"Check that store synchronisation works" },
+		{ "basic-many-each", store_many, 0, 2,
+			"Try and create race condition and see if we"
+			" can catch interrupts" },
+		{ "switch-each", switch_ring, 1, 20,
+			"Check sync after context switch" },
+		{ "forked-switch-each", switch_ring, ncpus, 20,
+			"Check sync after context switch parallelly" },
+		{ "forked-each", sync_ring, ncpus, 20,
+			"Forked variant of sync_ring, which checks synchronisation"
+			" of ring with parallel executions" },
+		{ "forked-store-each", store_ring, ncpus, 20,
+			"Forked variant of store_ring, check if parallel store"
+			" synchronisation works" },
+		{ "active-each", active_ring, 0, 20,
+			"Exercise waiting while keeping the GPU busy" },
+		{ "wakeup-each", wakeup_ring, 20, 1,
+			"Stress test for nop + sync" },
+		{ "active-wakeup-each", active_wakeup_ring, 20, 1,
+			"Measure wakeup latency while also scheduling the next batch" },
+		{ "double-wakeup-each", wakeup_ring, 20, 2,
+			"Double stress test for nop + sync" },
 		{}
 	}, individual[] = {
-		{ "default", sync_ring, 1, 20 },
-		{ "idle", idle_ring, 0, 20 },
-		{ "active", active_ring, 0, 20 },
-		{ "wakeup", wakeup_ring, 20, 1 },
-		{ "active-wakeup", active_wakeup_ring, 20, 1 },
-		{ "double-wakeup", wakeup_ring, 20, 2 },
-		{ "store", store_ring, 1, 20 },
-		{ "switch", switch_ring, 1, 20 },
-		{ "forked-switch", switch_ring, ncpus, 20 },
-		{ "many", store_many, 0, 20 },
-		{ "forked", sync_ring, ncpus, 20 },
-		{ "forked-store", store_ring, ncpus, 20 },
+		{ "default", sync_ring, 1, 20,
+			"Check synchronisation of rings for each engine" },
+		{ "idle", idle_ring, 0, 20,
+			"Exercise and measure idle requests" },
+		{ "active", active_ring, 0, 20,
+			"Exercise waiting while keeping the GPU busy" },
+		{ "wakeup", wakeup_ring, 20, 1,
+			"Checks Alternate stress for nop + sync" },
+		{ "active-wakeup", active_wakeup_ring, 20, 1,
+			"Measure wakeup latency while also scheduling the next batch" },
+		{ "double-wakeup", wakeup_ring, 20, 2,
+			"Stress test for nop + sync" },
+		{ "store", store_ring, 1, 20,
+			"Check that store synchronisation works" },
+		{ "switch", switch_ring, 1, 20,
+			"Check sync after context switch" },
+		{ "forked-switch", switch_ring, ncpus, 20,
+			"Check sync after context switch parallelly" },
+		{ "many", store_many, 0, 20,
+			"Try and create race condition and see if we catch interrupts" },
+		{ "forked", sync_ring, ncpus, 20,
+			"Check synchronisation of ring with parallel executions" },
+		{ "forked-store", store_ring, ncpus, 20,
+			"Check store synchronisation works with parallel multiple"
+			" executions" },
 		{}
 	};
 #define for_each_test(t, T) for(typeof(*T) *t = T; t->name; t++)
@@ -1255,6 +1283,7 @@ igt_main
 
 	/* Legacy for selecting rings. */
 	for_each_test(t, individual) {
+		igt_describe_f("%s for each legacy engine.", t->describe);
 		igt_subtest_with_dynamic_f("legacy-%s", t->name) {
 			for (const struct intel_execution_ring *l = intel_execution_rings; l->name; l++) {
 				igt_dynamic_f("%s", l->name) {
@@ -1265,27 +1294,38 @@ igt_main
 		}
 	}
 
+	igt_describe("Basic test to wait upon a batch on all rings.");
 	igt_subtest("basic-all")
 		sync_all(fd, ctx, 1, 2);
+
+	igt_describe("Extended version of store synchronisation test.");
 	igt_subtest("basic-store-all")
 		store_all(fd, ctx, 1, 2);
 
+	igt_describe("Extended version of existing basic-all test.");
 	igt_subtest("all")
 		sync_all(fd, ctx, 1, 20);
+	igt_describe("Extended version of existing basic-store-all test.");
 	igt_subtest("store-all")
 		store_all(fd, ctx, 1, 20);
+
+	igt_describe("Parallel execution of batch on all rings and then wait.");
 	igt_subtest("forked-all")
 		sync_all(fd, ctx, ncpus, 20);
+
+	igt_describe("Parallel execution of store synchronisation.");
 	igt_subtest("forked-store-all")
 		store_all(fd, ctx, ncpus, 20);
 
 	for_each_test(t, all) {
+		igt_describe_f("%s.",t->describe);
 		igt_subtest_f("%s", t->name)
 			t->func(fd, ctx, ALL_ENGINES, t->num_children, t->timeout);
 	}
 
 	/* New way of selecting engines. */
 	for_each_test(t, individual) {
+		igt_describe_f("%s on each engine.", t->describe);
 		igt_subtest_with_dynamic_f("%s", t->name) {
 			for_each_ctx_engine(fd, ctx, e) {
 				igt_dynamic_f("%s", e->name) {
@@ -1303,8 +1343,14 @@ igt_main
 			igt_require(gem_scheduler_has_preemption(fd));
 		}
 
+		igt_describe("Check and measure how well we can submit a second"
+			     " high priority task when the engine is already"
+			     " busy with a low priority task on all engines.");
 		igt_subtest("preempt-all")
 			preempt(fd, ctx, ALL_ENGINES, 1, 20);
+
+		igt_describe("For each context engine check how priority of task are"
+			     " submitted when engine is already busy.");
 		igt_subtest_with_dynamic("preempt") {
 			for_each_ctx_engine(fd, ctx, e) {
 				igt_dynamic_f("%s", e->name)
-- 
2.35.1



More information about the igt-dev mailing list