[PATCH i-g-t] test/amdgpu: fix unknow test issue for amdgpu queue test

vitaly prosyak vprosyak at amd.com
Wed Aug 28 01:50:38 UTC 2024


Hi Jesse,

The changes look good.

Could you please remove the condition check for sh_mem? This check is redundant because we already have igt_require(sh_mem != NULL); in the igt_fixture.

With that adjustment, the patch is:

Reviewed-by: Vitaly Prosyak <vitaly.prosyak at amd.com>

Thanks


Vitaly




On 2024-08-27 03:54, Zhang, Jesse(Jie) wrote:
> [AMD Official Use Only - AMD Internal Distribution Only]
>
> Hi Kamil
>
> -----Original Message-----
> From: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> Sent: Tuesday, August 27, 2024 3:24 PM
> To: igt-dev at lists.freedesktop.org
> Cc: Zhang, Jesse(Jie) <Jesse.Zhang at amd.com>; Prosyak, Vitaly <Vitaly.Prosyak at amd.com>; Deucher, Alexander <Alexander.Deucher at amd.com>; Koenig, Christian <Christian.Koenig at amd.com>
> Subject: Re: [PATCH i-g-t] test/amdgpu: fix unknow test issue for amdgpu queue test
>
> 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?
>
> Hi Kamil
>
> No, in the queue reset test, we start three processes (test process, background process, and monitoring process)
> when running any test (including unknown tests, such as such as:  sudo amd_queue_reset --run-subtest amdgpu_testxxx).
>
> The known process can exit with the other three processes.
>
> The unknown process can exit, but the other processes will not exit.
>
> This patch fixes the issue of other processes exiting in the unknown case.
>
> Regards
> Jesse
>
> 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
>>                       }
>>               }
>>       }
>> +
Please, remove

sh_mem

>> +     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