* [PATCH i-g-t v2] tests/xe_debugfs: add GT debugfs validation and GSC info read tests
@ 2026-07-15 4:21 Sobin Thomas
0 siblings, 0 replies; only message in thread
From: Sobin Thomas @ 2026-07-15 4:21 UTC (permalink / raw)
To: igt-dev, daniele.ceraolospurio; +Cc: Sobin Thomas
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
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-15 4:21 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-15 4:21 [PATCH i-g-t v2] tests/xe_debugfs: add GT debugfs validation and GSC info read tests Sobin Thomas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox