All of 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 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.