[PATCH v3 3/4] tests/amdgpu: execute userq tests only if userq support IP

Sunil Khatri sunil.khatri at amd.com
Wed Apr 30 06:28:34 UTC 2025


check the IP supported by userqueues before executing any
userq test cases.

Cc: Prosyak, Vitaly <Vitaly.Prosyak at amd.com>
Cc: Jesse Zhang <jesse.zhang at amd.com>
Signed-off-by: Sunil Khatri <sunil.khatri at amd.com>
---
 tests/amdgpu/amd_basic.c    | 10 +++++-----
 tests/amdgpu/amd_cs_nop.c   | 11 +++--------
 tests/amdgpu/amd_security.c | 13 +++++++++----
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/tests/amdgpu/amd_basic.c b/tests/amdgpu/amd_basic.c
index eb8447220..e0029f582 100644
--- a/tests/amdgpu/amd_basic.c
+++ b/tests/amdgpu/amd_basic.c
@@ -697,6 +697,7 @@ igt_main
 	int fd = -1;
 	int r;
 	bool arr_cap[AMD_IP_MAX] = {0};
+	bool userq_arr_cap[AMD_IP_MAX] = {0};
 
 	igt_fixture {
 		uint32_t major, minor;
@@ -717,6 +718,7 @@ igt_main
 		r = setup_amdgpu_ip_blocks(major, minor,  &gpu_info, device);
 		igt_assert_eq(r, 0);
 		asic_rings_readness(device, 1, arr_cap);
+		asic_userq_readiness(device, userq_arr_cap);
 	}
 	igt_describe("Check-alloc-free-VRAM-visible-non-visible-GART-write-combined-cached");
 	igt_subtest("memory-alloc")
@@ -789,12 +791,10 @@ igt_main
 	}
 
 #ifdef AMDGPU_USERQ_ENABLED
-	arr_cap[AMD_IP_GFX] = 1;
-	arr_cap[AMD_IP_COMPUTE] = 1;
 
 	igt_describe("Check-GFX-CS-for-every-available-ring-works-for-write-const-fill-and-copy-operation-using-more-than-one-IB-and-shared-IB");
 	igt_subtest_with_dynamic("cs-gfx-with-IP-GFX-UMQ") {
-		if (arr_cap[AMD_IP_GFX]) {
+		if (userq_arr_cap[AMD_IP_GFX]) {
 			igt_dynamic_f("cs-gfx-with-umq")
 			amdgpu_command_submission_gfx(device, info.hw_ip_version_major < 11, true);
 		}
@@ -802,7 +802,7 @@ igt_main
 
 	igt_describe("Check-COMPUTE-CS-for-every-available-ring-works-for-write-const-fill-copy-and-nop-operation");
 	igt_subtest_with_dynamic("cs-compute-with-IP-COMPUTE-UMQ") {
-		if (arr_cap[AMD_IP_COMPUTE]) {
+		if (userq_arr_cap[AMD_IP_COMPUTE]) {
 			igt_dynamic_f("cs-compute-with-umq")
 			amdgpu_command_submission_compute(device, true);
 		}
@@ -810,7 +810,7 @@ igt_main
 
 	igt_describe("Check-sync-dependency-using-GFX-ring");
 	igt_subtest_with_dynamic("sync-dependency-test-with-IP-GFX-UMQ") {
-		if (arr_cap[AMD_IP_GFX]) {
+		if (userq_arr_cap[AMD_IP_GFX]) {
 			igt_dynamic_f("sync-dependency-test-with-umq")
 			amdgpu_sync_dependency_test(device, true);
 		}
diff --git a/tests/amdgpu/amd_cs_nop.c b/tests/amdgpu/amd_cs_nop.c
index 67bb0419d..160c4f026 100644
--- a/tests/amdgpu/amd_cs_nop.c
+++ b/tests/amdgpu/amd_cs_nop.c
@@ -169,6 +169,7 @@ igt_main
 	}, *e;
 	int fd = -1;
 	bool arr_cap[AMD_IP_MAX] = {0};
+	bool userq_arr_cap[AMD_IP_MAX] = {0};
 
 	igt_fixture {
 		uint32_t major, minor;
@@ -182,6 +183,7 @@ igt_main
 		err = amdgpu_cs_ctx_create(device, &context);
 		igt_assert_eq(err, 0);
 		asic_rings_readness(device, 1, arr_cap);
+		asic_userq_readiness(device, userq_arr_cap);
 	}
 
 	for (p = phase; p->name; p++) {
@@ -198,18 +200,11 @@ igt_main
 	}
 
 #ifdef AMDGPU_USERQ_ENABLED
-	/*
-	 * TODO: Add a programmatic check to determine which IPs (gfx, compute, sdma)
-	 * are present for the user-mode queue and execute the test accordingly.
-	 */
-	arr_cap[AMDGPU_HW_IP_GFX] = 1;
-	arr_cap[AMDGPU_HW_IP_COMPUTE] = 1;
-
 	for (p = phase; p->name; p++) {
 		for (e = engines; e->name; e++) {
 			igt_describe("Stressful-and-multiple-cs-of-nop-operations-using-multiple-processes-with-the-same-GPU-context-UMQ");
 			igt_subtest_with_dynamic_f("cs-nops-with-%s-%s0-with-UQ-Submission", p->name, e->name) {
-				if (arr_cap[e->ip_type]) {
+				if (userq_arr_cap[e->ip_type]) {
 					igt_dynamic_f("cs-nop-with-%s-%s0-with-UQ-Submission", p->name, e->name)
 					nop_cs(device, context, e->name, e->ip_type, 0, 20,
 					       p->flags, 1);
diff --git a/tests/amdgpu/amd_security.c b/tests/amdgpu/amd_security.c
index 1c880c11f..ff22fd8db 100644
--- a/tests/amdgpu/amd_security.c
+++ b/tests/amdgpu/amd_security.c
@@ -315,6 +315,7 @@ igt_main
 	struct drm_amdgpu_info_hw_ip  sdma_info = {};
 	int r, fd = -1;
 	bool is_secure = true;
+	bool userq_arr_cap[AMD_IP_MAX] = {0};
 
 	igt_fixture {
 		uint32_t major, minor;
@@ -331,6 +332,7 @@ igt_main
 		igt_assert_eq(r, 0);
 		r = amdgpu_query_hw_ip_info(device, AMDGPU_HW_IP_DMA, 0, &sdma_info);
 		igt_assert_eq(r, 0);
+		asic_userq_readiness(device, userq_arr_cap);
 		igt_skip_on(!is_security_tests_enable(device, &gpu_info, major, minor));
 	}
 
@@ -355,15 +357,18 @@ igt_main
 			AMDGPU_HW_IP_DMA), is_secure);
 
 #ifdef AMDGPU_USERQ_ENABLED
+
 	igt_describe("amdgpu gfx command submission write linear helper with user queue");
 	igt_subtest("gfx-write-linear-helper-secure-umq")
-	amdgpu_command_submission_write_linear_helper(device,
-			get_ip_block(device, AMDGPU_HW_IP_GFX), is_secure, true);
+	if (userq_arr_cap[AMD_IP_GFX])
+		amdgpu_command_submission_write_linear_helper(device,
+				get_ip_block(device, AMDGPU_HW_IP_GFX), is_secure, true);
 
 	igt_describe("amdgpu compute command submission write linear helper with user queue");
 	igt_subtest("compute-write-linear-helper-secure-umq")
-	amdgpu_command_submission_write_linear_helper(device,
-			get_ip_block(device, AMDGPU_HW_IP_COMPUTE), is_secure, true);
+	if (userq_arr_cap[AMD_IP_COMPUTE])
+		amdgpu_command_submission_write_linear_helper(device,
+				get_ip_block(device, AMDGPU_HW_IP_COMPUTE), is_secure, true);
 #endif
 
 	igt_fixture {
-- 
2.43.0



More information about the igt-dev mailing list