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
next 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.