[PATCH] [PATCH v3] tests/xe_pm: add coverage for xe_device_sysfs
[email protected] Tue, 11 Aug 2026 07:20:47 +0000
Newsgroups
org.freedesktop.lists.igt-dev
Message-ID
<[email protected] >
From: Shivtej Patil <[email protected] >
Modify xe_pm subtests to exercise the following
xe_device_sysfs.c functions:
- vram_d3cold_threshold_show()
- vram_d3cold_threshold_store()
- lb_fan_control_version_show()
- lb_voltage_regulator_version_show()
- auto_link_downgrade_capable_show()
- auto_link_downgrade_status_show()
The subtests validate the corresponding sysfs
attributes and improve code coverage for
xe_device_sysfs.c.
Signed-off-by: Shivtej Patil <[email protected] >
---
tests/intel-ci/xe.pm.d3cold.testlist | 6 ++
tests/intel/xe_pm.c | 154 ++++++++++++++++++++++++++-
2 files changed, 158 insertions(+), 2 deletions(-)
diff --git a/tests/intel-ci/xe.pm.d3cold.testlist b/tests/intel-ci/xe.pm.d3cold.testlist
index 783859fc7..e240fe7fb 100644
--- a/tests/intel-ci/xe.pm.d3cold.testlist
+++ b/tests/intel-ci/xe.pm.d3cold.testlist
@@ -9,3 +9,9 @@ igt@xe_pm@d3cold-mmap-system
igt@xe_pm@d3cold-mmap-vram
igt@xe_pm@d3cold-mocs
igt@xe_pm@vram-d3cold-threshold
+igt@xe_pm@vram-d3cold-threshold-show
+igt@xe_pm@vram-d3cold-threshold-store
+igt@xe_pm@lb-fan-control-version-show
+igt@xe_pm@lb-voltage-regulator-version-show
+igt@xe_pm@auto-link-downgrade-capable-show
+igt@xe_pm@auto-link-downgrade-status-show
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 6fbc13e43..cf3f1fd22 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -141,6 +141,11 @@ static void set_vram_d3cold_threshold(int sysfs, uint64_t threshold)
igt_assert_lt(0, ret);
}
+static bool sysfs_exists(int sysfs_fd, const char *path)
+{
+ return !faccessat(sysfs_fd, path, R_OK, 0);
+}
+
static void vram_d3cold_threshold_restore(int sig)
{
int fd, sysfs_fd;
@@ -620,6 +625,48 @@ test_exec(device_t device, int n_exec_queues, int n_execs,
active_threads = 0;
}
+/**
+ * SUBTEST: vram-d3cold-threshold-show
+ * Description:
+ * Validate reading of vram_d3cold_threshold sysfs entry.
+ * Functionality: pm-d3cold
+ */
+
+/**
+ * SUBTEST: vram-d3cold-threshold-store
+ * Description:
+ * Validate writing and reading back vram_d3cold_threshold sysfs entry.
+ * Functionality: pm-d3cold
+ */
+
+/**
+ * SUBTEST: lb-fan-control-version-show
+ * Description:
+ * Validate reading lb_fan_control_version sysfs entry.
+ * Functionality: pm-sysfs
+ */
+
+/**
+ * SUBTEST: lb-voltage-regulator-version-show
+ * Description:
+ * Validate reading lb_voltage_regulator_version sysfs entry.
+ * Functionality: pm-sysfs
+ */
+
+/**
+ * SUBTEST: auto-link-downgrade-capable-show
+ * Description:
+ * Validate reading auto_link_downgrade_capable sysfs entry.
+ * Functionality: pm-sysfs
+ */
+
+/**
+ * SUBTEST: auto-link-downgrade-status-show
+ * Description:
+ * Validate reading auto_link_downgrade_status sysfs entry.
+ * Functionality: pm-sysfs
+ */
+
/**
* SUBTEST: vram-d3cold-threshold
* Functionality: pm - d3cold
@@ -1112,14 +1159,117 @@ int igt_main()
igt_describe("Validate whether card is limited to d3hot,"
"if vram used > vram threshold");
- igt_subtest("vram-d3cold-threshold") {
+igt_subtest("vram-d3cold-threshold") {
igt_require_f(has_runtime_pm, "Runtime PM not available\n");
orig_threshold = get_vram_d3cold_threshold(sysfs_fd);
igt_install_exit_handler(vram_d3cold_threshold_restore);
test_vram_d3cold_threshold(device, sysfs_fd);
}
- igt_fixture() {
+igt_subtest("vram-d3cold-threshold-show")
+{
+ uint64_t threshold;
+
+ igt_require(sysfs_exists(sysfs_fd,
+ "device/vram_d3cold_threshold"));
+
+ threshold = get_vram_d3cold_threshold(sysfs_fd);
+
+ igt_info("threshold=%" PRIu64 "\n", threshold);
+}
+
+igt_subtest("vram-d3cold-threshold-store")
+{
+ uint64_t old_val;
+ uint64_t new_val;
+
+ igt_require(sysfs_exists(sysfs_fd,
+ "device/vram_d3cold_threshold"));
+ old_val = get_vram_d3cold_threshold(sysfs_fd);
+ /*
+ * Ensure the original threshold is restored even if
+ * an assertion fails later in the test.
+ */
+ igt_install_exit_handler(vram_d3cold_threshold_restore);
+ set_vram_d3cold_threshold(sysfs_fd, old_val + 1);
+ new_val = get_vram_d3cold_threshold(sysfs_fd);
+ igt_assert_eq(new_val, old_val + 1);
+ /* restore */
+ set_vram_d3cold_threshold(sysfs_fd, old_val);
+ igt_info("old=%" PRIu64 " new=%" PRIu64 "\n",
+ old_val, new_val);
+}
+
+igt_subtest("lb-fan-control-version-show")
+{
+ char version[64];
+ int ret;
+
+ igt_require(sysfs_exists(sysfs_fd,
+ "device/lb_fan_control_version"));
+
+ ret = igt_sysfs_scanf(sysfs_fd,
+ "device/lb_fan_control_version",
+ "%63s", version);
+
+ igt_assert(ret > 0);
+
+ igt_info("lb-fan-control-version=%s\n", version);
+}
+
+igt_subtest("lb-voltage-regulator-version-show")
+{
+ char version[64] = {};
+ int ret;
+
+ igt_require(sysfs_exists(sysfs_fd,
+ "device/lb_voltage_regulator_version"));
+
+ ret = igt_sysfs_scanf(sysfs_fd,
+ "device/lb_voltage_regulator_version",
+ "%63s", version);
+ igt_info("ret=%d errno=%d version='%s'\n",
+ ret, errno, version);
+
+ igt_assert(ret > 0);
+ igt_info("lb-voltage-regulator-version=%s\n", version);
+}
+
+igt_subtest("auto-link-downgrade-capable-show")
+{
+ int val;
+ int ret;
+
+ igt_require(sysfs_exists(sysfs_fd,
+ "device/auto_link_downgrade_capable"));
+
+ ret = igt_sysfs_scanf(sysfs_fd,
+ "device/auto_link_downgrade_capable",
+ "%d", &val);
+
+ igt_assert(ret > 0);
+ igt_assert(val == 0 || val == 1);
+ igt_info("auto-link-downgrade-capable=%d\n", val);
+}
+
+igt_subtest("auto-link-downgrade-status-show")
+{
+ int val;
+ int ret;
+
+ igt_require(sysfs_exists(sysfs_fd,
+ "device/auto_link_downgrade_status"));
+
+ ret = igt_sysfs_scanf(sysfs_fd,
+ "device/auto_link_downgrade_status",
+ "%d", &val);
+
+ igt_assert(ret > 0);
+ igt_assert(val == 0 || val == 1);
+ igt_info("auto-link-downgrade-status=%d\n", val);
+}
+
+igt_fixture() {
close(sysfs_fd);
igt_pm_set_d3cold_allowed(device.pci_slot_name, d3cold_allowed);
if (has_runtime_pm)
--
2.43.0