From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2E2F410F89F for ; Tue, 28 Jun 2022 13:44:28 +0000 (UTC) From: sai.gowtham.ch@intel.com To: igt-dev@lists.freedesktop.org, kamil.konieczny@linux.intel.com, sai.gowtham.ch@intel.com Date: Tue, 28 Jun 2022 19:13:40 +0530 Message-Id: <20220628134341.3363-2-sai.gowtham.ch@intel.com> In-Reply-To: <20220628134341.3363-1-sai.gowtham.ch@intel.com> References: <20220628134341.3363-1-sai.gowtham.ch@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [igt-dev] [PATCH i-g-t 1/2] tests/i915/gem_sync: Added test description for test case. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: From: Sai Gowtham Ch Added test description for test and to all the subtests that are available. Cc: Kamil Konieczny Signed-off-by: Sai Gowtham Ch Reviewed-by: Kamil Konieczny --- 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..8ee33c77 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, + "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" }, + { "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, + "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, + "Double 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, + "Create race condition and see if we can 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("Basic 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