[PATCH i-g-t] test/amdgpu: fix unknow test issue for amdgpu queue test
Kamil Konieczny
kamil.konieczny at linux.intel.com
Tue Aug 27 07:24:07 UTC 2024
Hi Jesse.zhang,
On 2024-08-27 at 13:19:32 +0800, Jesse.zhang at amd.com wrote:
> Queue reset does not exit properly when executing unknown subtests.
> Because other processes are still functioning.
>
> It should exit the other three processes
> (test, background, and monitor) for this case.
>
> Cc: Vitaly Prosyak <vitaly.prosyak at amd.com>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Cc: Christian Koenig <christian.koenig at amd.com>
>
> Signed-off-by: Jesse Zhang <jesse.zhang at amd.com>
> ---
> tests/amdgpu/amd_queue_reset.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/tests/amdgpu/amd_queue_reset.c b/tests/amdgpu/amd_queue_reset.c
> index 60208e085..85408e3ff 100644
> --- a/tests/amdgpu/amd_queue_reset.c
> +++ b/tests/amdgpu/amd_queue_reset.c
> @@ -70,6 +70,7 @@ struct shmbuf {
> int count;
> bool sub_test_completed;
> bool sub_test_is_skipped;
> + bool sub_test_is_existed;
> unsigned int test_flags;
> int test_error_code;
> bool reset_completed;
> @@ -148,6 +149,7 @@ skip_sub_test(struct shmbuf *sh_mem)
> {
> sem_wait(&sh_mem->sem_state_mutex);
> sh_mem->sub_test_is_skipped = true;
> + sh_mem->sub_test_is_existed = true;
> sem_post(&sh_mem->sem_state_mutex);
> }
Do you re-implement igt infra?
Regards,
Kamil
>
> @@ -327,6 +329,7 @@ static void set_next_test_to_run(struct shmbuf *sh_mem, unsigned int error,
> sh_mem->good_job.ip = ip_good;
> sh_mem->good_job.ring_id = ring_id_good;
> sh_mem->sub_test_is_skipped = false;
> + sh_mem->sub_test_is_existed = true;
> sem_post(&sh_mem->sem_state_mutex);
>
> //sync and wait for complete
> @@ -405,6 +408,7 @@ shared_mem_create(struct shmbuf **ppbuf)
> shmp->sub_test_completed = false;
> shmp->reset_completed = false;
> shmp->sub_test_is_skipped = false;
> + shmp->sub_test_is_existed = false;
>
> *ppbuf = shmp;
> return shm_fd;
> @@ -1128,7 +1132,6 @@ igt_main
> create_contexts(device, &arr_context_handle, const_num_of_tests);
> else if (process == PROCESS_BACKGROUND)
> fd_shm = shared_mem_open(&sh_mem);
> -
> igt_require(fd_shm != -1);
> igt_require(sh_mem != NULL);
>
> @@ -1136,7 +1139,6 @@ igt_main
> process, sh_mem, const_num_of_tests, info[0].hw_ip_version_major,
> &monitor_child, &test_child);
> }
> -
> for (int i = 0; i < ARRAY_SIZE(ip_tests); i++) {
> reset_rings_numbers(&ring_id_good, &ring_id_bad, &ring_id_job_good, &ring_id_job_bad);
> for (struct dynamic_test *it = &arr_err[0]; it->name; it++) {
> @@ -1154,6 +1156,10 @@ igt_main
> }
> }
> }
> +
> + if (sh_mem &&( !sh_mem->sub_test_is_existed))
> + set_next_test_to_skip(sh_mem);
> +
> igt_fixture {
> if (process == PROCESS_TEST) {
> waitpid(monitor_child, &monitorExitMethod, 0);
> --
> 2.25.1
>
More information about the igt-dev
mailing list