All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 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.