[PATCH] amdgpu/queue_reset_test: fix list-subtests command failure from script

Zhang, Jesse(Jie) Jesse.Zhang at amd.com
Wed Aug 7 02:09:15 UTC 2024


[AMD Official Use Only - AMD Internal Distribution Only]

this patch look good to me
Reviewed-by:Jesse Zhang <jesse.zhang at amd.com>

-----Original Message-----
From: vitaly.prosyak at amd.com <vitaly.prosyak at amd.com>
Sent: Wednesday, August 7, 2024 9:59 AM
To: igt-dev at lists.freedesktop.org
Cc: Prosyak, Vitaly <Vitaly.Prosyak at amd.com>; Kamil Konieczny <kamil.konieczny at linux.intel.com>; Deucher, Alexander <Alexander.Deucher at amd.com>; Koenig, Christian <Christian.Koenig at amd.com>; Zhang, Jesse(Jie) <Jesse.Zhang at amd.com>
Subject: [PATCH] amdgpu/queue_reset_test: fix list-subtests command failure from script

From: Vitaly Prosyak <vitaly.prosyak at amd.com>

If run command: ninja -C build test then the following is occured:
the process amd_queue_reset is terminated with error code 134 (assert), i found this editing script in igt-command_line.sh The following is the result of execution:

393/427 testcase check amdgpu/amd_queue_reset                   FAIL             0.23s   exit status 1
>>> UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print
>>> _stacktrace=1 MALLOC_PERTURB_=255
ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1
/home/vprosyak/src/igt-gpu-tools/tests/igt_command_line.sh amdgpu/amd_queue_reset

stdout:
tests/amdgpu/amd_queue_reset:
  Checking invalid option handling...
  Checking valid option handling...
  Checking subtest enumeration...
    test does not exit with 0 or 79 with --list-subtests!
    test does exits with 134
FAIL: tests/amdgpu/amd_queue_reset
stderr:
skipping is allowed only in fixtures, subtests or igt_simple_main please refer to lib/igt_core documentation
amd_queue_reset: ../lib/igt_core.c:441: internal_assert: Assertion `0' failed.
Received signal SIGABRT.
Stack trace:
Aborted (core dumped).

To fix the issue move the shared memory creation into igt_fixture block.

v2: Fix formatting errors.

Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
Cc: Alex Deucher <alexander.deucher at amd.com>
Cc: Christian Koenig <christian.koenig at amd.com>
Cc: Jesse Zhang <jesse.zhang at amd.com>
Signed-off-by: Vitaly Prosyak <vitaly.prosyak at amd.com>
---
 tests/amdgpu/amd_queue_reset.c | 63 ++++++++++++++++++----------------
 1 file changed, 33 insertions(+), 30 deletions(-)

diff --git a/tests/amdgpu/amd_queue_reset.c b/tests/amdgpu/amd_queue_reset.c index 04366c0bf..9ea0a1f24 100644
--- a/tests/amdgpu/amd_queue_reset.c
+++ b/tests/amdgpu/amd_queue_reset.c
@@ -754,6 +754,7 @@ is_background_parameter_found(int argc, char **argv)  }

 #define RUNSUBTEST     "--run-subtest"
+
 static bool
 is_run_subtest_parameter_found(int argc, char **argv)  { @@ -769,6 +770,7 @@ is_run_subtest_parameter_found(int argc, char **argv)
        return ret;
 }

+
 static bool
 add_background_parameter(int *pargc, char **argv)  { @@ -801,9 +803,9 @@ launch_background_process(int argc, char **argv, char *path, pid_t *ppid, int sh
        int status;
        posix_spawn_file_actions_t action;

-       for(int i = 0; i < argc; i++) {
+       for (int i = 0; i < argc; i++) {
                /* The background process only runs when a queue reset is actually triggered. */
-               if(strstr(argv[i], "list-subtests") != NULL)
+               if (strstr(argv[i], "list-subtests") != NULL)
                        return 0;
        }
        posix_spawn_file_actions_init(&action);
@@ -907,30 +909,30 @@ igt_main

        int const_num_of_tests;

-       posix_spawn_file_actions_init(&action);
-
-       if (!get_command_line(cmdline, &argc, &argv, &path))
-               igt_fail(IGT_EXIT_FAILURE);
-
-       if (is_run_subtest_parameter_found(argc, argv))
-               const_num_of_tests = 1;
-       else
-               const_num_of_tests = ARRAY_SIZE(arr_err);
-
-       if (!is_background_parameter_found(argc, argv)) {
-               add_background_parameter(&argc, argv);
-               fd_shm = shared_mem_create(&sh_mem);
-               igt_require(fd_shm != -1);
-               launch_background_process(argc, argv, path, &pid_background, fd_shm);
-               process = PROCESS_TEST;
-       } else {
-               process = PROCESS_BACKGROUND;
-       }
-
        igt_fixture {
                uint32_t major, minor;
                int err;

+               posix_spawn_file_actions_init(&action);
+
+               if (!get_command_line(cmdline, &argc, &argv, &path))
+                       igt_fail(IGT_EXIT_FAILURE);
+
+               if (is_run_subtest_parameter_found(argc, argv))
+                       const_num_of_tests = 1;
+               else
+                       const_num_of_tests = ARRAY_SIZE(arr_err);
+
+               if (!is_background_parameter_found(argc, argv)) {
+                       add_background_parameter(&argc, argv);
+                       fd_shm = shared_mem_create(&sh_mem);
+                       igt_require(fd_shm != -1);
+                       launch_background_process(argc, argv, path, &pid_background, fd_shm);
+                       process = PROCESS_TEST;
+               } else {
+                       process = PROCESS_BACKGROUND;
+               }
+
                fd = drm_open_driver(DRIVER_AMDGPU);

                err = amdgpu_device_initialize(fd, &major, &minor, &device); @@ -964,7 +966,7 @@ igt_main
        igt_describe("Stressful-and-multiple-cs-of-bad and good length-operations-using-multiple-processes");
        igt_subtest("amdgpu-compute-CMD_STREAM_EXEC_INVALID_PACKET_LENGTH") {
                if (arr_cap[ip_test] && get_next_rings(ring_id_good, info.available_rings, &ring_id_good, &ring_id_bad)) {
-                               set_next_test_to_run(sh_mem, CMD_STREAM_EXEC_INVALID_PACKET_LENGTH,
+                       set_next_test_to_run(sh_mem, CMD_STREAM_EXEC_INVALID_PACKET_LENGTH,
                                                ip_background, ip_test, ring_id_good, ring_id_bad);
                }
        }
@@ -972,7 +974,7 @@ igt_main
        igt_describe("Stressful-and-multiple-cs-of-bad and good opcode-operations-using-multiple-processes");
        igt_subtest("amdgpu-compute-CMD_STREAM_EXEC_INVALID_OPCODE") {
                if (arr_cap[ip_test] && get_next_rings(ring_id_good, info.available_rings, &ring_id_good, &ring_id_bad)) {
-                               set_next_test_to_run(sh_mem, CMD_STREAM_EXEC_INVALID_OPCODE,
+                       set_next_test_to_run(sh_mem, CMD_STREAM_EXEC_INVALID_OPCODE,
                                                ip_background, ip_test, ring_id_good, ring_id_bad);
                }
        }
@@ -997,11 +999,11 @@ igt_main
         *      }
         */

+       //amdgpu_ring_soft_recovery
        igt_describe("Stressful-and-multiple-cs-of-bad and good shader-operations-using-multiple-processes");
-       igt_subtest("Handful-by-soft-recovery-amdgpu-compute-BACKEND_SE_GC_SHADER_INVALID_PROGRAM_ADDR") {
+
+igt_subtest("Handful-by-soft-recovery-amdgpu-compute-BACKEND_SE_GC_SHAD
+ER_INVALID_PROGRAM_ADDR") {
                if (arr_cap[ip_test] && get_next_rings(ring_id_good, info.available_rings, &ring_id_good, &ring_id_bad)) {
-                               //amdgpu_ring_soft_recovery
-                               set_next_test_to_run(sh_mem, BACKEND_SE_GC_SHADER_INVALID_PROGRAM_ADDR,
+                       set_next_test_to_run(sh_mem,
+BACKEND_SE_GC_SHADER_INVALID_PROGRAM_ADDR,
                                                ip_background, ip_test, ring_id_good, ring_id_bad);
                }
        }
@@ -1009,7 +1011,7 @@ igt_main
        igt_describe("Stressful-and-multiple-cs-of-bad and good shader-operations-using-multiple-processes");
        igt_subtest("amdgpu-compute-BACKEND_SE_GC_SHADER_INVALID_PROGRAM_SETTING") {
                if (arr_cap[ip_test] && get_next_rings(ring_id_good, info.available_rings, &ring_id_good, &ring_id_bad)) {
-                               set_next_test_to_run(sh_mem, BACKEND_SE_GC_SHADER_INVALID_PROGRAM_SETTING,
+                       set_next_test_to_run(sh_mem,
+BACKEND_SE_GC_SHADER_INVALID_PROGRAM_SETTING,
                                                ip_background, ip_test, ring_id_good, ring_id_bad);
                }
        }
@@ -1017,7 +1019,7 @@ igt_main
        igt_describe("Stressful-and-multiple-cs-of-bad and good shader-operations-using-multiple-processes");
        igt_subtest("amdgpu-compute-BACKEND_SE_GC_SHADER_INVALID_USER_DATA") {
                if (arr_cap[ip_test] && get_next_rings(ring_id_good, info.available_rings, &ring_id_good, &ring_id_bad)) {
-                               set_next_test_to_run(sh_mem, BACKEND_SE_GC_SHADER_INVALID_USER_DATA,
+                       set_next_test_to_run(sh_mem, BACKEND_SE_GC_SHADER_INVALID_USER_DATA,
                                                ip_background, ip_test, ring_id_good, ring_id_bad);
                }
        }
@@ -1033,6 +1035,7 @@ igt_main
                drm_close_driver(fd);
                shared_mem_destroy(sh_mem, fd_shm, true);
                posix_spawn_file_actions_destroy(&action);
+
+               free_command_line(argc, argv, path);
        }
-       free_command_line(argc, argv, path);
 }
--
2.25.1



More information about the igt-dev mailing list