From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Peter Senna Tschudin <peter.senna@linux.intel.com>
Cc: <igt-dev@lists.freedesktop.org>, <michal.wajdeczko@intel.com>,
<marcin.bernatowicz@intel.com>, <kamil.konieczny@linux.intel.com>,
<katarzyna.piecielska@intel.com>,
<zbigniew.kempczynski@intel.com>, <ewelina.musial@intel.com>
Subject: Re: [PATCH v3 resend i-g-t 5/6] tests: Add xe_debugfs
Date: Mon, 7 Jul 2025 10:43:28 -0400 [thread overview]
Message-ID: <aGvdEGG5hdLLIfU7@intel.com> (raw)
In-Reply-To: <81885310-1ccf-4d0e-9ec2-606807c5a185@linux.intel.com>
On Fri, Jul 04, 2025 at 11:06:15AM +0200, Peter Senna Tschudin wrote:
>
>
> On 7/3/2025 10:36 PM, Rodrigo Vivi wrote:
> > On Mon, Jun 16, 2025 at 09:42:37AM +0200, Peter Senna Tschudin wrote:
> >> xe_debugfs is a test specific to Xe GPUs. It is intended to complement
> >> the existing generic debugfs tests core_debugfs and
> >> core_debugfs_display_on_off.
> >>
> >> Additionally, this test has been updated to use the igt_dir
> >> infrastructure, resulting in simpler code.
> >>
> >> Cc: michal.wajdeczko@intel.com
> >> Cc: marcin.bernatowicz@intel.com
> >> Cc: kamil.konieczny@linux.intel.com
> >> Cc: katarzyna.piecielska@intel.com
> >> Cc: zbigniew.kempczynski@intel.com
> >> Cc: ewelina.musial@intel.com
> >> Signed-off-by: Peter Senna Tschudin <peter.senna@linux.intel.com>
> >> ---
> >> v3:
> >> - unchanged from v2
> >> v2:
> >> - changed style of comparison to NULL
> >>
> >> tests/intel-ci/xe-fast-feedback.testlist | 2 +
> >> tests/intel/xe_debugfs.c | 208 +++++++++++++++++++++++
> >> tests/meson.build | 1 +
> >> 3 files changed, 211 insertions(+)
> >> create mode 100644 tests/intel/xe_debugfs.c
> >>
> >> diff --git a/tests/intel-ci/xe-fast-feedback.testlist b/tests/intel-ci/xe-fast-feedback.testlist
> >> index a5f799f6b..c52f08953 100644
> >> --- a/tests/intel-ci/xe-fast-feedback.testlist
> >> +++ b/tests/intel-ci/xe-fast-feedback.testlist
> >> @@ -78,6 +78,8 @@ igt@xe_create@create-execqueues-noleak
> >> igt@xe_create@create-execqueues-leak
> >> igt@xe_create@create-invalid-mbz
> >> igt@xe_create@create-massive-size
> >> +igt@xe_debugfs@xe-base
> >> +igt@xe_debugfs@xe-forcewake
> >> igt@xe_dma_buf_sync@export-dma-buf-once-write-sync
> >> igt@xe_dma_buf_sync@export-dma-buf-once-read-sync
> >> igt@xe_dma_buf_sync@export-dma-buf-once-read-write-sync
> >> diff --git a/tests/intel/xe_debugfs.c b/tests/intel/xe_debugfs.c
> >> new file mode 100644
> >> index 000000000..66a5fa0f6
> >> --- /dev/null
> >> +++ b/tests/intel/xe_debugfs.c
> >> @@ -0,0 +1,208 @@
> >> +// SPDX-License-Identifier: MIT
> >> +/*
> >> + * Copyright © 2025 Intel Corporation
> >> + */
> >> +
> >> +#include <dirent.h>
> >> +#include <fcntl.h>
> >> +
> >> +#include "igt.h"
> >> +#include "igt_debugfs.h"
> >> +#include "igt_dir.h"
> >> +#include "igt_sysfs.h"
> >> +#include "xe/xe_query.h"
> >> +
> >> +
> >> +struct {
> >> + bool warn_on_not_hit;
> >> +} opt = { 0 };
> >> +
> >> +/**
> >> + * TEST: Xe debugfs test
> >> + * Description: Xe-specific debugfs tests. These are complementary to the
> >> + * core_debugfs and core_debugfs_display_on_off tests.
> >> + *
> >> + * Category: Core
> >> + * Mega feature: General Core features
> >> + * Sub-category: uapi
> >> + * Functionality: debugfs
> >> + * Feature: core
> >> + * Test category: uapi
> >> + *
> >> + */
> >> +
> >> +IGT_TEST_DESCRIPTION("Read entries from debugfs, and sysfs paths.");
> >> +
> >> +static int xe_validate_entries(igt_dir_t *igt_dir,
> >> + const char * const str_val[], int str_cnt)
> >> +{
> >> + igt_dir_file_list_t *file_list_entry;
> >> +
> >> + if (!igt_dir)
> >> + return -1;
> >> +
> >> + igt_dir_scan_dirfd(igt_dir, -1);
> >> +
> >> + for (int i = 0; i < str_cnt; i++) {
> >> + int hit = 0;
> >> +
> >> + igt_list_for_each_entry(file_list_entry,
> >> + &igt_dir->file_list_head, link) {
> >> + if (strcmp(file_list_entry->relative_path,
> >> + str_val[i]) == 0) {
> >> + hit = 1;
> >> + break;
> >> + }
> >> + }
> >> +
> >> + if (!hit && opt.warn_on_not_hit)
> >> + igt_warn("no test for: %s\n", str_val[i]);
> >> + }
> >> +
> >> + return 0;
> >> +}
> >> +
> >> +/**
> >> + * SUBTEST: xe-base
> >> + * Description: Check if various debugfs devnodes exist and test reading them
> >> + */
> >> +static void
> >> +xe_test_base(int fd, struct drm_xe_query_config *config, igt_dir_t *igt_dir)
> >> +{
> >> + uint16_t devid = intel_get_drm_devid(fd);
> >> + static const char * const expected_files[] = {
> >> + "gt0",
> >> + "gt1",
> >> + "stolen_mm",
> >> + "gtt_mm",
> >> + "vram0_mm",
> >> + "forcewake_all",
> >> + "info",
> >> + "gem_names",
> >> + "clients",
> >> + "name"
> >> + };
> >> + char reference[4096];
> >> + int val = 0;
> >> +
> >> + igt_assert(config);
> >> + sprintf(reference, "devid 0x%llx",
> >> + config->info[DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID] & 0xffff);
> >> + igt_assert(igt_debugfs_search(fd, "info", reference));
> >> +
> >> + sprintf(reference, "revid %lld",
> >> + config->info[DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID] >> 16);
> >> + igt_assert(igt_debugfs_search(fd, "info", reference));
> >> +
> >> + sprintf(reference, "is_dgfx %s", config->info[DRM_XE_QUERY_CONFIG_FLAGS] &
> >> + DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM ? "yes" : "no");
> >> +
> >> + igt_assert(igt_debugfs_search(fd, "info", reference));
> >> +
> >> + if (intel_gen(devid) < 20) {
> >> + switch (config->info[DRM_XE_QUERY_CONFIG_VA_BITS]) {
> >> + case 48:
> >> + val = 3;
> >> + break;
> >> + case 57:
> >> + val = 4;
> >> + break;
> >> + }
> >> +
> >> + sprintf(reference, "vm_max_level %d", val);
> >> + igt_assert(igt_debugfs_search(fd, "info", reference));
> >> + }
> >> +
> >> + snprintf(reference, sizeof(reference), "tile_count %d", xe_sysfs_get_num_tiles(fd));
> >> + igt_assert(igt_debugfs_search(fd, "info", reference));
> >> +
> >> + igt_assert(igt_debugfs_exists(fd, "gt0", O_RDONLY));
> >> +
> >> + igt_assert(igt_debugfs_exists(fd, "gtt_mm", O_RDONLY));
> >> + igt_debugfs_dump(fd, "gtt_mm");
> >> +
> >> + if (config->info[DRM_XE_QUERY_CONFIG_FLAGS] & DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM) {
> >> + igt_assert(igt_debugfs_exists(fd, "vram0_mm", O_RDONLY));
> >> + igt_debugfs_dump(fd, "vram0_mm");
> >> + }
> >> +
> >> + if (igt_debugfs_exists(fd, "stolen_mm", O_RDONLY))
> >> + igt_debugfs_dump(fd, "stolen_mm");
> >> +
> >> + igt_assert(igt_debugfs_exists(fd, "clients", O_RDONLY));
> >> + igt_debugfs_dump(fd, "clients");
> >> +
> >> + igt_assert(igt_debugfs_exists(fd, "gem_names", O_RDONLY));
> >> + igt_debugfs_dump(fd, "gem_names");
> >> +
> >> + xe_validate_entries(igt_dir, expected_files,
> >> + ARRAY_SIZE(expected_files));
> >> +}
> >> +
> >> +/**
> >> + * SUBTEST: xe-forcewake
> >> + * Description: Check forcewake debugfs devnode
> >> + */
> >> +static void
> >> +xe_test_forcewake(int fd)
> >> +{
> >> + int handle = igt_debugfs_open(fd, "forcewake_all", O_WRONLY);
> >
> > What I don't see here is how do we avoid the forcewake_all to be read
> > in the other test? Or that doesn't matter there?
>
> There is a recent kernel change that I forgot about. Now the kernel
> requires opening the files for write to trigger a GPU reset.
>
> The core_ tests only attempt to open files for reading using O_RDONLY.
> This should no longer trigger resets in the GPU. So I guess that from
> the Xe perspective, we are actually good to go trying to open all files
> for reading.
Okay then, let's go like this
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> >
> >> +
> >> + igt_assert_neq(handle, -1);
> >> + close(handle);
> >> +}
> >> +
> >> +const char *help_str =
> >> + " -w\t--warn-not-hit Produce warnings if it founds a devfs node without tests";
> >> +
> >> +struct option long_options[] = {
> >> + { "--warn-not-hit", no_argument, NULL, 'w'},
> >> + { 0, 0, 0, 0 }
> >> +};
> >> +
> >> +static int opt_handler(int option, int option_index, void *input)
> >> +{
> >> + switch (option) {
> >> + case 'w':
> >> + opt.warn_on_not_hit = true;
> >
> > what about make this the default?
> >
> >> + break;
> >> + default:
> >> + return IGT_OPT_HANDLER_ERROR;
> >> + }
> >> +
> >> + return IGT_OPT_HANDLER_SUCCESS;
> >> +}
> >> +
> >> +igt_main_args("", long_options, help_str, opt_handler, NULL)
> >> +{
> >> + int debugfs = -1;
> >> + int fd = -1;
> >> + igt_dir_t *igt_dir = NULL;
> >> +
> >> + igt_fixture {
> >> + fd = drm_open_driver_master(DRIVER_XE);
> >> + __igt_debugfs_dump(fd, "info", IGT_LOG_INFO);
> >> + debugfs = igt_debugfs_dir(fd);
> >> +
> >> + igt_dir = igt_dir_create(debugfs);
> >> + igt_require(igt_dir);
> >> +
> >> + kmstest_set_vt_graphics_mode();
> >> + }
> >> +
> >> + igt_describe("Check if various debugfs devnodes exist and test reading them.");
> >> + igt_subtest("xe-base") {
> >> + xe_test_base(fd, xe_config(fd), igt_dir);
> >> + }
> >> +
> >> + igt_describe("Check forcewake debugfs devnode");
> >> + igt_subtest("xe-forcewake") {
> >> + xe_test_forcewake(fd);
> >> + }
> >> +
> >> + igt_fixture {
> >> + igt_dir_destroy(igt_dir);
> >> + close(debugfs);
> >> + drm_close_driver(fd);
> >> + }
> >> +}
> >> diff --git a/tests/meson.build b/tests/meson.build
> >> index a06172d2e..847598255 100644
> >> --- a/tests/meson.build
> >> +++ b/tests/meson.build
> >> @@ -283,6 +283,7 @@ intel_xe_progs = [
> >> 'xe_compute_preempt',
> >> 'xe_copy_basic',
> >> 'xe_configfs',
> >> + 'xe_debugfs',
> >> 'xe_dma_buf_sync',
> >> 'xe_drm_fdinfo',
> >> 'xe_eu_stall',
> >> --
> >> 2.43.0
> >>
>
next prev parent reply other threads:[~2025-07-07 14:43 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-16 7:42 [PATCH v3 resend i-g-t 0/6] Replace intel_sysfs_debugfs Peter Senna Tschudin
2025-06-16 7:42 ` [PATCH v3 resend i-g-t 1/6] lib/igt_dir: Directory processing and flexible file handling Peter Senna Tschudin
2025-06-24 13:24 ` Sokolowski, Jan
2025-06-16 7:42 ` [PATCH v3 resend i-g-t 2/6] tests: Add core_debugfs Peter Senna Tschudin
2025-06-16 7:42 ` [PATCH v3 resend i-g-t 3/6] tests: Add core_debugfs_heads_power Peter Senna Tschudin
2025-07-03 20:39 ` Rodrigo Vivi
2025-07-04 8:06 ` Peter Senna Tschudin
2025-07-04 10:01 ` Karthik B S
2025-07-04 11:36 ` Kamil Konieczny
2025-07-04 10:02 ` Karthik B S
2025-06-16 7:42 ` [PATCH v3 resend i-g-t 4/6] tests: Add core_sysfs Peter Senna Tschudin
2025-06-16 7:42 ` [PATCH v3 resend i-g-t 5/6] tests: Add xe_debugfs Peter Senna Tschudin
2025-07-03 20:36 ` Rodrigo Vivi
2025-07-04 8:57 ` Peter Senna Tschudin
2025-07-04 9:06 ` Peter Senna Tschudin
2025-07-07 14:43 ` Rodrigo Vivi [this message]
2025-06-16 7:42 ` [PATCH v3 resend i-g-t 6/6] tests/intel: Remove intel_sysfs_debugfs Peter Senna Tschudin
2025-07-03 20:39 ` Rodrigo Vivi
2025-06-16 19:50 ` ✓ Xe.CI.BAT: success for Replace intel_sysfs_debugfs Patchwork
2025-06-17 2:49 ` ✗ Xe.CI.Full: failure " Patchwork
2025-06-17 13:01 ` ✗ i915.CI.BAT: " Patchwork
2025-07-03 21:44 ` ✓ Xe.CI.BAT: success for Replace intel_sysfs_debugfs (rev2) Patchwork
2025-07-03 21:45 ` ✓ i915.CI.BAT: " Patchwork
2025-07-04 4:29 ` ✗ i915.CI.Full: failure " Patchwork
2025-07-05 14:40 ` ✓ Xe.CI.Full: success " Patchwork
2025-07-07 21:03 ` [PATCH v4 i-g-t 0/6] Replace intel_sysfs_debugfs Peter Senna Tschudin
2025-07-07 21:03 ` [PATCH v4 i-g-t 1/6] lib/igt_dir: Directory processing and flexible file handling Peter Senna Tschudin
2025-07-07 21:03 ` [PATCH v4 i-g-t 2/6] tests: Add core_debugfs Peter Senna Tschudin
2025-07-07 21:03 ` [PATCH v4 i-g-t 3/6] tests: Add kms_debugfs Peter Senna Tschudin
2025-07-07 21:03 ` [PATCH v4 i-g-t 4/6] tests: Add core_sysfs Peter Senna Tschudin
2025-07-07 21:03 ` [PATCH v4 i-g-t 5/6] tests: Add xe_debugfs Peter Senna Tschudin
2025-07-07 21:03 ` [PATCH v4 i-g-t 6/6] tests/intel: Remove intel_sysfs_debugfs Peter Senna Tschudin
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=aGvdEGG5hdLLIfU7@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=ewelina.musial@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=kamil.konieczny@linux.intel.com \
--cc=katarzyna.piecielska@intel.com \
--cc=marcin.bernatowicz@intel.com \
--cc=michal.wajdeczko@intel.com \
--cc=peter.senna@linux.intel.com \
--cc=zbigniew.kempczynski@intel.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