[PATCH v2] tests/xe_debugfs: Improve test_gt subtest
Kamil Konieczny
kamil.konieczny at linux.intel.com
Mon Jan 20 12:06:33 UTC 2025
Hi Pravalika,
On 2025-01-13 at 19:15:58 +0530, Pravalika Gurram wrote:
one nit about subject, it is now:
[PATCH v2] tests/xe_debugfs: Improve test_gt subtest
imho better:
[PATCH v2] tests/intel/xe_debugfs: Improve gt subtest
You could get list of subtest with --list option, for example
./xe_debugfs --list
produces output:
base
gt
forcewake
There is no test_gt there as a subtest name. Btw this could be
corrected at merge time.
> Read the debugfs entries in the loop to improve the readability.
> Added library function to check whether the debugfs is a directory or not.
>
> Signed-off-by: Pravalika Gurram <pravalika.gurram at intel.com>
LGTM
Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
> lib/igt_debugfs.c | 27 +++++++++++++
> lib/igt_debugfs.h | 1 +
> tests/intel/xe_debugfs.c | 82 ++++++----------------------------------
> 3 files changed, 40 insertions(+), 70 deletions(-)
>
> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
> index f4f749e30..cd604e7c6 100644
> --- a/lib/igt_debugfs.c
> +++ b/lib/igt_debugfs.c
> @@ -376,6 +376,33 @@ igt_debugfs_gt_open(int device, unsigned int gt, const char *filename, int mode)
> return ret;
> }
>
> +/**
> + * igt_debugfs_is_dir:
> + * @drm_fd: fd of the device
> + * @name: name of the debugfs node to check
> + * @gt: gt instance number
> + *
> + * This helps to find the debugfs file is a directory or not
> + *
> + * Returns:
> + * true if the debugfs is a directory
> + */
> +bool igt_debugfs_is_dir(int drm_fd, const char *name, int gt_id)
> +{
> + char path[128];
> + struct stat st;
> +
> + if (fstat(drm_fd, &st) != 0)
> + return false;
> +
> + snprintf(path, sizeof(path), "/sys/kernel/debug/dri/%d/gt%d/%s",
> + minor(st.st_rdev), gt_id, name);
> + if (!stat(path, &st) && S_ISDIR(st.st_mode))
> + return true;
> +
> + return false;
> +}
> +
> /**
> * igt_debugfs_simple_read:
> * @dir: fd of the debugfs directory
> diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
> index 3e6194ade..f4044d545 100644
> --- a/lib/igt_debugfs.h
> +++ b/lib/igt_debugfs.h
> @@ -39,6 +39,7 @@ int igt_debugfs_connector_dir(int device, char *conn_name, int mode);
> int igt_debugfs_pipe_dir(int device, int pipe, int mode);
>
> int igt_debugfs_open(int fd, const char *filename, int mode);
> +bool igt_debugfs_is_dir(int drm_fd, const char *name, int gt_id);
> bool igt_debugfs_exists(int fd, const char *filename, int mode);
> void __igt_debugfs_read(int fd, const char *filename, char *buf, int size);
> void __igt_debugfs_write(int fd, const char *filename, const char *buf, int size);
> diff --git a/tests/intel/xe_debugfs.c b/tests/intel/xe_debugfs.c
> index bcbb5036a..c653daae4 100644
> --- a/tests/intel/xe_debugfs.c
> +++ b/tests/intel/xe_debugfs.c
> @@ -180,77 +180,19 @@ test_gt(int fd, int gt_id)
> // "guc_ct_selftest"
> };
>
> - sprintf(name, "gt%d/hw_engines", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/sa_info", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/steering", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/topology", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/pat", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/mocs", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/ggtt", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/register-save-restore", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/workarounds", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/default_lrc_rcs", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/default_lrc_ccs", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/default_lrc_bcs", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/default_lrc_vecs", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/default_lrc_vcs", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/hwconfig", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/uc/guc_info", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> -
> - sprintf(name, "gt%d/uc/huc_info", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> + for (int i = 0; i < ARRAY_SIZE(expected_files); i++) {
> + sprintf(name, "gt%d/%s", gt_id, expected_files[i]);
> + igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> + if (igt_debugfs_is_dir(fd, expected_files[i], gt_id))
> + continue;
> + igt_debugfs_dump(fd, name);
> + }
>
> - sprintf(name, "gt%d/uc/guc_log", gt_id);
> - igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> - igt_debugfs_dump(fd, name);
> + for (int i = 0; i < ARRAY_SIZE(expected_files_uc); i++) {
> + sprintf(name, "gt%d/uc/%s", gt_id, expected_files_uc[i]);
> + igt_assert(igt_debugfs_exists(fd, name, O_RDONLY));
> + igt_debugfs_dump(fd, name);
> + }
>
> sprintf(name, "/gt%d", gt_id);
> validate_entries(fd, name, expected_files, ARRAY_SIZE(expected_files));
> --
> 2.34.1
>
More information about the igt-dev
mailing list