All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sobin Thomas <sobin.thomas@intel.com>
To: igt-dev@lists.freedesktop.org, daniele.ceraolospurio@intel.com
Cc: kamil.konieczny@intel.com, Sobin Thomas <sobin.thomas@intel.com>
Subject: [PATCH i-g-t] tests/intel/xe_debugfs: add uc debugfs validation and read tests
Date: Wed, 29 Jul 2026 07:41:30 +0000	[thread overview]
Message-ID: <20260729074130.4499-1-sobin.thomas@intel.com> (raw)

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


             reply	other threads:[~2026-07-29  7:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29  7:41 Sobin Thomas [this message]
2026-07-29 15:30 ` ✓ Xe.CI.BAT: success for tests/intel/xe_debugfs: add uc debugfs validation and read tests Patchwork
2026-07-29 16:15 ` ✓ i915.CI.BAT: " Patchwork

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=20260729074130.4499-1-sobin.thomas@intel.com \
    --to=sobin.thomas@intel.com \
    --cc=daniele.ceraolospurio@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=kamil.konieczny@intel.com \
    /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.