From: vitaly prosyak <vprosyak@amd.com>
To: "Jesse.zhang@amd.com" <jesse.zhang@amd.com>,
igt-dev@lists.freedesktop.org
Cc: Vitaly Prosyak <vitaly.prosyak@amd.com>,
Alex Deucher <alexander.deucher@amd.com>,
Christian Koenig <christian.koenig@amd.com>,
Kamil Konieczny <kamil.konieczny@linux.intel.com>
Subject: Re: [PATCH i-g-t] tests/amdgpu: fix concurrent queue test issue
Date: Fri, 6 Sep 2024 18:39:30 -0400 [thread overview]
Message-ID: <4f055ab6-ec94-453c-91fa-c012f193e497@amd.com> (raw)
In-Reply-To: <20240906021334.1085959-1-jesse.zhang@amd.com>
The change looks good to me.
Reviewed-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
On 2024-09-05 22:13, Jesse.zhang@amd.com wrote:
> When running with parameter --device on multiple cards simultaneously.
> All queue test processes will share "/queue_reset_shm",which will create conflicts.
> such as:
> sudo ./tests/amdgpu/amd_queue_reset --device drm:/dev/dri/card0
> sudo ./tests/amdgpu/amd_queue_reset --device drm:/dev/dri/card1
>
> To solve this problem. It should open a unique shared memory for different devices.
>
> Signed-off-by: Jesse Zhang <jesse.zhang@amd.com>
> Reviewed-by: Vitaly Prosyak <vitaly.prosyak@amd.com>
> ---
> tests/amdgpu/amd_queue_reset.c | 42 +++++++++++++++++++++++++++-------
> 1 file changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/tests/amdgpu/amd_queue_reset.c b/tests/amdgpu/amd_queue_reset.c
> index 537f653f9..8f5c7d4b8 100644
> --- a/tests/amdgpu/amd_queue_reset.c
> +++ b/tests/amdgpu/amd_queue_reset.c
> @@ -32,7 +32,6 @@
>
> #define SHARED_CHILD_DESCRIPTOR 3
>
> -#define SHARED_MEM_NAME "/queue_reset_shm"
> #define TEST_TIMEOUT 100 //100 seconds
>
> enum process_type {
> @@ -349,7 +348,7 @@ static void set_next_test_to_skip(struct shmbuf *sh_mem)
> }
>
> static int
> -shared_mem_destroy(struct shmbuf *shmp, int shm_fd, bool unmap)
> +shared_mem_destroy(struct shmbuf *shmp, int shm_fd, bool unmap, char shm_name[256])
> {
> int ret = 0;
>
> @@ -363,20 +362,20 @@ shared_mem_destroy(struct shmbuf *shmp, int shm_fd, bool unmap)
> if (shm_fd > 0)
> close(shm_fd);
>
> - shm_unlink(SHARED_MEM_NAME);
> + shm_unlink(shm_name);
>
> return ret;
> }
>
> static int
> -shared_mem_create(struct shmbuf **ppbuf)
> +shared_mem_create(struct shmbuf **ppbuf, char shm_name[256])
> {
> int shm_fd = -1;
> struct shmbuf *shmp = NULL;
> bool unmap = false;
>
> // Create a shared memory object
> - shm_fd = shm_open(SHARED_MEM_NAME, O_CREAT | O_RDWR, 0666);
> + shm_fd = shm_open(shm_name, O_CREAT | O_RDWR, 0666);
> if (shm_fd == -1)
> goto error;
>
> @@ -414,7 +413,7 @@ shared_mem_create(struct shmbuf **ppbuf)
> return shm_fd;
>
> error:
> - shared_mem_destroy(shmp, shm_fd, unmap);
> + shared_mem_destroy(shmp, shm_fd, unmap, shm_name);
> return shm_fd;
> }
>
> @@ -877,6 +876,29 @@ is_run_subtest_parameter_found(int argc, char **argv)
> return ret;
> }
>
> +#define ONDEVICE "--device"
> +static int
> +is_run_device_parameter_found(int argc, char **argv)
> +{
> + int i;
> + int res = 0;
> + char *p = NULL;
> +
> + for (i = 1; i < argc; i++) {
> + if (strcmp(ONDEVICE, argv[i]) == 0) {
> + /* Get the sum for a specific device as a unique identifier */
> + p = argv[i+1];
> + while(*p){
> + res += *p;
> + p++;
> + }
> + break;
> + }
> + }
> +
> + return res;
> +}
> +
>
> static bool
> add_background_parameter(int *pargc, char **argv)
> @@ -1041,6 +1063,7 @@ igt_main
> struct shmbuf *sh_mem = NULL;
>
> int r;
> + char shm_name[256] = {0};
> bool arr_cap[AMD_IP_MAX] = {0};
> unsigned int ring_id_good;
> unsigned int ring_id_bad;
> @@ -1100,6 +1123,9 @@ igt_main
> else
> const_num_of_tests = (sizeof(arr_err)/sizeof(struct dynamic_test) - 1) * ARRAY_SIZE(ip_tests);
>
> + r = is_run_device_parameter_found(argc, argv);
> + snprintf(shm_name,sizeof(shm_name),"/queue_reset_shm_%d",r);
> +
> fd = drm_open_driver(DRIVER_AMDGPU);
>
> err = amdgpu_device_initialize(fd, &major, &minor, &device);
> @@ -1121,7 +1147,7 @@ igt_main
>
> if (!is_background_parameter_found(argc, argv)) {
> add_background_parameter(&argc, argv);
> - fd_shm = shared_mem_create(&sh_mem);
> + fd_shm = shared_mem_create(&sh_mem, shm_name);
> igt_require(fd_shm != -1);
> launch_background_process(argc, argv, path, &pid_background, fd_shm);
> process = PROCESS_TEST;
> @@ -1169,7 +1195,7 @@ igt_main
> free_contexts(device, arr_context_handle, const_num_of_tests);
> amdgpu_device_deinitialize(device);
> drm_close_driver(fd);
> - shared_mem_destroy(sh_mem, fd_shm, true);
> + shared_mem_destroy(sh_mem, fd_shm, true, shm_name);
> posix_spawn_file_actions_destroy(&action);
>
> free_command_line(argc, argv, path);
next prev parent reply other threads:[~2024-09-06 22:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-06 2:13 [PATCH i-g-t] tests/amdgpu: fix concurrent queue test issue Jesse.zhang@amd.com
2024-09-06 2:59 ` ✓ CI.xeBAT: success for tests/amdgpu: fix concurrent queue test issue (rev2) Patchwork
2024-09-06 2:59 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-09-06 22:39 ` vitaly prosyak [this message]
2024-09-08 5:55 ` ✓ CI.xeFULL: success " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-09-05 8:20 [PATCH i-g-t] tests/amdgpu: fix concurrent queue test issue Jesse.zhang@amd.com
2024-09-05 20:45 ` vitaly prosyak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4f055ab6-ec94-453c-91fa-c012f193e497@amd.com \
--to=vprosyak@amd.com \
--cc=alexander.deucher@amd.com \
--cc=christian.koenig@amd.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=jesse.zhang@amd.com \
--cc=kamil.konieczny@linux.intel.com \
--cc=vitaly.prosyak@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox