Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t] tests/intel/xe_debugfs: add uc debugfs validation and read tests
@ 2026-07-29  7:41 Sobin Thomas
  0 siblings, 0 replies; only message in thread
From: Sobin Thomas @ 2026-07-29  7:41 UTC (permalink / raw)
  To: igt-dev, daniele.ceraolospurio; +Cc: kamil.konieczny, Sobin Thomas

Add coverage for GT-specific uc debugfs entries by introducing a new
uc-info-read 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)
v3: Added checks for the device nodes.
v4: Consolidated the calls into single test_uc_info_read subtest
v5: Fixed mandatory and optional logs and access check
    is done using igt_sysfs_has_attr. (Daniele)
    Fixed subject nits. (Kamil)

Signed-off-by: Sobin Thomas <sobin.thomas@intel.com>
---
 tests/intel/xe_debugfs.c | 71 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 70 insertions(+), 1 deletion(-)

diff --git a/tests/intel/xe_debugfs.c b/tests/intel/xe_debugfs.c
index da482157e..5c045b04f 100644
--- a/tests/intel/xe_debugfs.c
+++ b/tests/intel/xe_debugfs.c
@@ -16,6 +16,18 @@ struct {
 	bool warn_on_not_hit;
 } opt = { 0 };
 
+struct uc_info_node {
+	const char *node;
+	bool mandatory;
+};
+
+static const struct uc_info_node uc_info_nodes[] = {
+	{ "uc/gsc_info", false },
+	{ "uc/huc_info", false },
+	{ "uc/guc_info", true },
+	{ "uc/guc_pc",   true },
+};
+
 /**
  * TEST: Xe debugfs test
  * Description: Xe-specific debugfs tests. These are complementary to the
@@ -595,6 +607,56 @@ static void check_gt_reg_sr(int fd, int gt)
 	igt_assert_eq(problems, 0);
 }
 
+/**
+ * SUBTEST: uc-info-read
+ * Description: This is for reading the uc device nodes.
+ */
+static void test_uc_info_read(struct xe_device *xe_dev, unsigned int gt)
+{
+	int debugfs_fd = igt_debugfs_gt_dir(xe_dev->fd, gt);
+	int i;
+	int fail_count = 0;
+
+	igt_skip_on_f(debugfs_fd < 0, "Failed to open debugfs directory\n");
+
+	for (i = 0; i < ARRAY_SIZE(uc_info_nodes); i++) {
+		const char *node = uc_info_nodes[i].node;
+		bool mandatory = uc_info_nodes[i].mandatory;
+		char *buf;
+
+		if (!igt_sysfs_has_attr(debugfs_fd, node)) {
+			if (mandatory)
+				fail_count++;
+			igt_info("%s debugfs node not present on GT-%u\n", node, gt);
+			continue;
+		}
+		buf = igt_sysfs_get(debugfs_fd, node);
+		if (!buf) {
+			if (mandatory)
+				fail_count++;
+
+			igt_info("Failed to read %s %s debugfs file on GT-%u\n",
+				 mandatory ? "mandatory" : "optional", node, gt);
+			continue;
+		}
+
+		if (buf[0] == '\0') {
+			free(buf);
+			if (mandatory)
+				fail_count++;
+			igt_info("%s %s debugfs file is empty on GT-%u\n",
+				 mandatory ? "mandatory" : "optional", node, gt);
+			continue;
+		}
+		igt_info("GT-%u: successfully read %s (%zu bytes)\n", gt, node, strlen(buf));
+		free(buf);
+	}
+	close(debugfs_fd);
+	igt_fail_on_f(fail_count > 0,
+		      "%d mandatory debugfs node(s) failed (missing/unreadable/empty) on GT-%u\n",
+		      fail_count, gt);
+}
+
 const char *help_str =
 	"  --warn-not-hit|--w\tWarn about devfs nodes that have no tests";
 
@@ -619,8 +681,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;
+	int fd = -1;
+	unsigned int gt;
 	unsigned int t;
-	int fd = -1, gt;
 
 	igt_fixture() {
 		fd = drm_open_driver_master(DRIVER_XE);
@@ -648,6 +711,12 @@ 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("Verify that uC debugfs info nodes are present and readable.");
+	igt_subtest_with_dynamic("uc-info-read")
+		xe_for_each_gt(fd, gt)
+			igt_dynamic_f("gt%d", gt)
+				test_uc_info_read(xe_dev, gt);
+
 	igt_fixture() {
 		drm_close_driver(fd);
 	}
-- 
2.51.0


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-29  7:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29  7:41 [PATCH i-g-t] tests/intel/xe_debugfs: add uc debugfs validation and 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