[igt-dev] [PATCH i-g-t v1 3/4] lib/drmtest: create helper for dropping logged opened paths
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Thu Nov 2 19:55:31 UTC 2023
On Thu, Nov 02, 2023 at 01:10:38PM +0100, Kamil Konieczny wrote:
> Create helper for cleaning all cached opened paths for drivers.
> This may be used when we want to test multi-GPU scenarios and in
> them inform user about each opened GPU card including first one.
> Currently almost all tests open first card at start for
> performing checks for it but that cause a lost possibilty to
> inform user later about opening this first card.
>
> Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
> lib/drmtest.c | 24 +++++++++++++++++++++---
> lib/drmtest.h | 2 ++
> 2 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 4425d4ca9..d114e8ecf 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -221,16 +221,17 @@ struct _opened_device_path {
> struct igt_list_head link;
> };
>
> +static IGT_LIST_HEAD(_opened_paths);
> +
> /*
> * Logs path of opened device. Device path opened for the first time is logged at info level,
> * subsequent opens (if any) are logged at debug level.
> */
> static void log_opened_device_path(const char *device_path)
> {
> - static IGT_LIST_HEAD(opened_paths);
> struct _opened_device_path *item;
>
> - igt_list_for_each_entry(item, &opened_paths, link) {
> + igt_list_for_each_entry(item, &_opened_paths, link) {
> if (!strcmp(item->path, device_path)) {
> igt_debug("Opened previously opened device: %s\n", device_path);
> return;
> @@ -241,10 +242,27 @@ static void log_opened_device_path(const char *device_path)
> igt_assert(item);
> item->path = strdup(device_path);
> igt_assert(item->path);
> - igt_list_add(&item->link, &opened_paths);
> + igt_list_add(&item->link, &_opened_paths);
> igt_info("Opened device: %s\n", item->path);
> }
>
> +/**
> + * __drm_invalidate_opened:
> + *
> + * Invalidate cached opened paths.
> + */
> +void __drm_invalidate_opened_log(void)
> +{
> + struct _opened_device_path *item, *tmp;
> +
> + if (!igt_list_empty(&_opened_paths))
> + igt_list_for_each_entry_safe(item, tmp, &_opened_paths, link) {
> + free(item->path);
> + igt_list_del(&item->link);
> + free(item);
> + }
> +}
What about devices opened in the fixture? They are long lived
but they will be reported as opened again.
--
Zbigniew
> +
> static int open_device(const char *name, unsigned int chipset)
> {
> const char *forced;
> diff --git a/lib/drmtest.h b/lib/drmtest.h
> index 992ada194..635a1b47c 100644
> --- a/lib/drmtest.h
> +++ b/lib/drmtest.h
> @@ -98,6 +98,8 @@ void __set_forced_driver(const char *name);
> */
> #define ALIGN_DOWN(x, a) ALIGN((x) - ((a) - 1), (a))
>
> +void __drm_invalidate_opened_log(void);
> +
> void drm_load_module(unsigned int chipset);
> int drm_open_driver(int chipset);
> int drm_open_driver_master(int chipset);
> --
> 2.42.0
>
More information about the igt-dev
mailing list