From: Sobin Thomas <sobin.thomas@intel.com>
To: igt-dev@lists.freedesktop.org, daniele.ceraolospurio@intel.com
Cc: Sobin Thomas <sobin.thomas@intel.com>
Subject: [PATCH i-g-t v2] tests/xe_debugfs: add GT debugfs validation and GSC info read tests
Date: Wed, 15 Jul 2026 04:21:13 +0000 [thread overview]
Message-ID: <20260715042113.1932212-1-sobin.thomas@intel.com> (raw)
Add coverage for GT-specific debugfs entries by introducing a new
gt-dir subtest that validates the presence of required files in the
GT debugfs hierarchy. The test currently verifies the existence of
the following debugfs nodes:
- uc/gsc_info
- uc/huc_info
- uc/guc_info
- uc/guc_pc
These additions improve validation of Xe GT debugfs interfaces and
provide basic functional coverage for the GSC information debugfs node.
v2: Add support for guc and huc info (Daniele)
Signed-off-by: Sobin Thomas <sobin.thomas@intel.com>
---
tests/intel/xe_debugfs.c | 103 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 102 insertions(+), 1 deletion(-)
diff --git a/tests/intel/xe_debugfs.c b/tests/intel/xe_debugfs.c
index da482157e..bc9a9c27f 100644
--- a/tests/intel/xe_debugfs.c
+++ b/tests/intel/xe_debugfs.c
@@ -451,6 +451,32 @@ skip:
igt_skip("Failed to open debugfs directory\n");
}
+/**
+ * SUBTEST: gt-dir
+ * Description: Check required debugfs devnodes exist in the GT debugfs directory
+ */
+static void test_gt_dir(struct xe_device *xe_dev, unsigned int gt)
+{
+ const struct check_entry expected_files[] = {
+ { "uc/gsc_info", O_RDONLY },
+ { "uc/huc_info", O_RDONLY },
+ { "uc/guc_info", O_RDONLY },
+ { "uc/guc_pc", O_RDONLY },
+ };
+ int debugfs_fd = igt_debugfs_gt_dir(xe_dev->fd, gt);
+ int missing_count;
+
+ igt_skip_on_f(debugfs_fd < 0, "Failed to open debugfs directory\n");
+
+ missing_count = debugfs_validate_entries(xe_dev, debugfs_fd, expected_files,
+ ARRAY_SIZE(expected_files));
+
+ close(debugfs_fd);
+
+ igt_fail_on_f(missing_count > 0, "Found %d missing debugfs files (see warnings above)\n",
+ missing_count);
+}
+
/**
* SUBTEST: tile-dir
* Description: Check required debugfs devnodes exist in the tile debugfs directory
@@ -595,6 +621,61 @@ static void check_gt_reg_sr(int fd, int gt)
igt_assert_eq(problems, 0);
}
+static void test_uc_info_read(struct xe_device *xe_dev, unsigned int gt, const char *node)
+{
+ int debugfs_fd = igt_debugfs_gt_dir(xe_dev->fd, gt);
+ char *buf;
+
+ igt_skip_on_f(debugfs_fd < 0, "Failed to open debugfs directory\n");
+
+ if (faccessat(debugfs_fd, node, F_OK, 0) < 0) {
+ close(debugfs_fd);
+ igt_skip("%s debugfs node not present on gt-%u\n", node, gt);
+ }
+ buf = igt_sysfs_get(debugfs_fd, node);
+ close(debugfs_fd);
+ igt_assert_f(buf, "Failed to read %s debugfs file\n", node);
+ igt_assert_f(buf[0] != '\0', "%s debugfs file is empty\n", node);
+ free(buf);
+}
+
+/**
+ * SUBTEST: gsc-info-read
+ * Description: Check GSC info debugfs devnode contents
+ */
+static void test_gsc_info_read(struct xe_device *xe_dev, unsigned int gt)
+{
+ test_uc_info_read(xe_dev, gt, "uc/gsc_info");
+}
+
+/**
+ * SUBTEST: huc-info-read
+ * Description: Check HUC info debugfs devnode contents
+ */
+static void test_huc_info_read(struct xe_device *xe_dev, unsigned int gt)
+{
+ test_uc_info_read(xe_dev, gt, "uc/huc_info");
+}
+
+/**
+ * SUBTEST: guc_pc read
+ * Description: Read the guc pc info from the debugfs node contents
+ */
+
+static void test_guc_pc_info(struct xe_device *xe_dev, unsigned int gt)
+{
+ test_uc_info_read(xe_dev, gt, "uc/guc_pc");
+}
+
+/**
+ * SUBTEST: guc-info-read
+ * Description: Check GUC info debugfs devnode contents
+ */
+static void test_guc_info_read(struct xe_device *xe_dev, unsigned int gt)
+{
+ test_uc_info_read(xe_dev, gt, "uc/guc_info");
+}
+
const char *help_str =
" --warn-not-hit|--w\tWarn about devfs nodes that have no tests";
@@ -619,8 +700,9 @@ static int opt_handler(int option, int option_index, void *input)
int igt_main_args("", long_options, help_str, opt_handler, NULL)
{
struct xe_device *xe_dev;
+ unsigned int gt;
unsigned int t;
- int fd = -1, gt;
+ int fd = -1;
igt_fixture() {
fd = drm_open_driver_master(DRIVER_XE);
@@ -633,6 +715,12 @@ int igt_main_args("", long_options, help_str, opt_handler, NULL)
igt_subtest("root-dir")
test_root_dir(xe_dev);
+ igt_describe("Check required debugfs devnodes exist in the GT debugfs directory.");
+ igt_subtest_with_dynamic("gt-dir")
+ xe_for_each_gt(fd, gt)
+ igt_dynamic_f("gt-%u", gt)
+ test_gt_dir(xe_dev, gt);
+
igt_describe("Check required debugfs devnodes exist in the tile debugfs directory.");
igt_subtest_with_dynamic("tile-dir")
xe_for_each_tile(fd, t)
@@ -648,6 +736,19 @@ int igt_main_args("", long_options, help_str, opt_handler, NULL)
igt_dynamic_f("gt%d", gt)
check_gt_reg_sr(fd, gt);
+ igt_describe("Check GSC info debugfs devnode contents.");
+ igt_subtest_with_dynamic("gsc-info-read")
+ xe_for_each_gt(fd, gt)
+ igt_dynamic_f("gt-%u", gt)
+ test_gsc_info_read(xe_dev, gt);
+ igt_describe("Read GuC information from debugfs.");
+ igt_subtest("guc-info-read")
+ test_guc_info_read(xe_dev, gt);
+
+ igt_describe("Read HuC information from debugfs.");
+ igt_subtest("huc-info-read")
+ test_huc_info_read(xe_dev, gt);
+
igt_fixture() {
drm_close_driver(fd);
}
--
2.52.0
reply other threads:[~2026-07-15 4:21 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20260715042113.1932212-1-sobin.thomas@intel.com \
--to=sobin.thomas@intel.com \
--cc=daniele.ceraolospurio@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.