Hi Daniel,
On 2025-09-12 at 15:19:29 -0300, Daniel Almeida wrote:
> Add the necessary code needed to compile panthor tests as well as the
> basic infrastructure that will be used by the Panthor tests themselves.
> 
> To make sure everything is in order, add a basic test in
> panthor_query.c.
> 
> Signed-off-by: Daniel Almeida <daniel.alme...@collabora.com>
> ---
>  lib/igt_panthor.c             | 41 +++++++++++++++++++++++++++++++++++
>  lib/igt_panthor.h             | 12 ++++++++++
>  lib/meson.build               |  1 +
>  meson.build                   |  8 +++++++
>  tests/meson.build             |  2 ++
>  tests/panthor/meson.build     | 12 ++++++++++
>  tests/panthor/panthor_query.c | 25 +++++++++++++++++++++
>  7 files changed, 101 insertions(+)
>  create mode 100644 lib/igt_panthor.c
>  create mode 100644 lib/igt_panthor.h
>  create mode 100644 tests/panthor/meson.build
>  create mode 100644 tests/panthor/panthor_query.c
> 
> diff --git a/lib/igt_panthor.c b/lib/igt_panthor.c
> new file mode 100644
> index 000000000..0b690f796
> --- /dev/null
> +++ b/lib/igt_panthor.c
> @@ -0,0 +1,41 @@
> +// SPDX-License-Identifier: MIT
> +// SPDX-FileCopyrightText: Copyright (C) 2025 Collabora Ltd.

We use SPD for licence because they are long texts. I do not
see any benefit of SPDX for copyright lines, it makes it even
longer than needed. It could stay if you want.

Acked-by: Kamil Konieczny <kamil.koniec...@linux.intel.com>

Regards,
Kamil

> +
> +#include "drmtest.h"
> +#include "igt_panthor.h"
> +#include "ioctl_wrappers.h"
> +#include "panthor_drm.h"
> +
> +/**
> + * SECTION:igt_panthor
> + * @short_description: Panthor support library
> + * @title: Panthor
> + * @include: igt.h
> + *
> + * This library provides various auxiliary helper functions for writing 
> Panthor
> + * tests.
> + */
> +
> +/**
> + * igt_panthor_query:
> + * @fd: device file descriptor
> + * @type: query type (e.g., DRM_PANTHOR_DEV_QUERY_GPU_INFO)
> + * @data: pointer to a struct to store the query result
> + * @size: size of the result struct
> + * @err: expected error code, or 0 for success
> + *
> + * Query GPU information.
> + */
> +void igt_panthor_query(int fd, int32_t type, void *data, size_t size, int 
> err)
> +{
> +     struct drm_panthor_dev_query query = {
> +             .type = type,
> +             .pointer = (uintptr_t)data,
> +             .size = size,
> +     };
> +
> +     if (err)
> +             do_ioctl_err(fd, DRM_IOCTL_PANTHOR_DEV_QUERY, &query, err);
> +     else
> +             do_ioctl(fd, DRM_IOCTL_PANTHOR_DEV_QUERY, &query);
> +}
> diff --git a/lib/igt_panthor.h b/lib/igt_panthor.h
> new file mode 100644
> index 000000000..a99b7102d
> --- /dev/null
> +++ b/lib/igt_panthor.h
> @@ -0,0 +1,12 @@
> +/* SPDX-License-Identifier: MIT */
> +/* SPDX-FileCopyrightText: Copyright (C) 2025 Collabora Ltd. */
> +
> +#ifndef IGT_PANTHOR_H
> +#define IGT_PANTHOR_H
> +
> +#include <stddef.h>
> +#include <stdint.h>
> +
> +void igt_panthor_query(int fd, int32_t type, void *data, size_t size, int 
> err);
> +
> +#endif /* IGT_PANTHOR_H */
> diff --git a/lib/meson.build b/lib/meson.build
> index f50a8d44b..4ccf3ee04 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -105,6 +105,7 @@ lib_sources = [
>       'igt_kmod.c',
>       'igt_ktap.c',
>       'igt_panfrost.c',
> +     'igt_panthor.c',
>       'igt_v3d.c',
>       'igt_vc4.c',
>       'igt_vmwgfx.c',
> diff --git a/meson.build b/meson.build
> index f7ae427b3..56ef8730e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -288,6 +288,7 @@ libexecdir = join_paths(get_option('libexecdir'), 
> 'igt-gpu-tools')
>  amdgpudir = join_paths(libexecdir, 'amdgpu')
>  msmdir = join_paths(libexecdir, 'msm')
>  panfrostdir = join_paths(libexecdir, 'panfrost')
> +panthordir = join_paths(libexecdir, 'panthor')
>  v3ddir = join_paths(libexecdir, 'v3d')
>  vc4dir = join_paths(libexecdir, 'vc4')
>  vkmsdir = join_paths(libexecdir, 'vkms')
> @@ -341,6 +342,12 @@ if get_option('use_rpath')
>       endforeach
>       panfrost_rpathdir = join_paths(panfrost_rpathdir, libdir)
>  
> +     panthor_rpathdir = '$ORIGIN'
> +     foreach p : panthordir.split('/')
> +             panthor_rpathdir = join_paths(panthor_rpathdir, '..')
> +     endforeach
> +     panthor_rpathdir = join_paths(panthor_rpathdir, libdir)
> +
>       v3d_rpathdir = '$ORIGIN'
>       foreach p : v3ddir.split('/')
>               v3d_rpathdir = join_paths(v3d_rpathdir, '..')
> @@ -370,6 +377,7 @@ else
>       amdgpudir_rpathdir = ''
>       msm_rpathdir = ''
>       panfrost_rpathdir = ''
> +     panthor_rpathdir = ''
>       v3d_rpathdir = ''
>       vc4_rpathdir = ''
>       vkms_rpathdir = ''
> diff --git a/tests/meson.build b/tests/meson.build
> index a7b9375ed..0b61561a4 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -486,6 +486,8 @@ subdir('msm')
>  
>  subdir('panfrost')
>  
> +subdir('panthor')
> +
>  subdir('v3d')
>  
>  subdir('vc4')
> diff --git a/tests/panthor/meson.build b/tests/panthor/meson.build
> new file mode 100644
> index 000000000..ce13aebaa
> --- /dev/null
> +++ b/tests/panthor/meson.build
> @@ -0,0 +1,12 @@
> +panthor_progs = [
> +     'panthor_query'
> +]
> +
> +foreach prog : panthor_progs
> +     test_executables += executable(prog, prog + '.c',
> +                                    dependencies : test_deps,
> +                                    install_dir : panthordir,
> +                                    install_rpath : panthor_rpathdir,
> +                                    install : true)
> +     test_list += join_paths('panthor', prog)
> +endforeach
> diff --git a/tests/panthor/panthor_query.c b/tests/panthor/panthor_query.c
> new file mode 100644
> index 000000000..7c1055763
> --- /dev/null
> +++ b/tests/panthor/panthor_query.c
> @@ -0,0 +1,25 @@
> +// SPDX-License-Identifier: MIT
> +// SPDX-FileCopyrightText: Copyright (C) 2025 Collabora Ltd.
> +
> +#include "igt.h"
> +#include "igt_core.h"
> +#include "igt_panthor.h"
> +#include "panthor_drm.h"
> +#include <stdint.h>
> +
> +igt_main {
> +     int fd;
> +
> +     igt_fixture { fd = drm_open_driver(DRIVER_PANTHOR); }
> +
> +     igt_describe("Query GPU information from ROM.");
> +     igt_subtest("query") {
> +             struct drm_panthor_gpu_info gpu = {};
> +
> +             igt_panthor_query(fd, DRM_PANTHOR_DEV_QUERY_GPU_INFO, &gpu, 
> sizeof(gpu), 0);
> +
> +             igt_assert(gpu.gpu_id != 0);
> +     }
> +
> +     igt_fixture { drm_close_driver(fd); }
> +}
> -- 
> 2.51.0
> 

Reply via email to