[RFC] tests/intel/xe_wedged: Add new test csc-wedged
Sk Anirban
sk.anirban at intel.com
Mon Jun 23 08:18:22 UTC 2025
Inject a CSC error through uevent to cause the Xe device to enter a wedged
state. To return the device to a normal state, reload the driver, as
the wedged state can only be resolved by rebinding/reprobing the driver.
Signed-off-by: Sk Anirban <sk.anirban at intel.com>
---
tests/intel/xe_wedged.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/tests/intel/xe_wedged.c b/tests/intel/xe_wedged.c
index 7fc7ca9eb..b37508710 100644
--- a/tests/intel/xe_wedged.c
+++ b/tests/intel/xe_wedged.c
@@ -46,6 +46,15 @@ static void force_wedged(int fd)
sleep(1);
}
+static void force_wedged_csc_error(int fd)
+{
+ igt_debugfs_write(fd, "inject_csc_hw_error/probability", "100");
+ igt_debugfs_write(fd, "inject_csc_hw_error/times", "1");
+
+ xe_force_gt_reset_sync(fd, 0);
+ sleep(1);
+}
+
static int simple_ioctl(int fd)
{
int ret;
@@ -208,6 +217,10 @@ simple_hang(int fd, struct drm_xe_sync *sync)
* SUBTEST: basic-wedged-read
* Description: Read wedged_mode debugfs
*/
+/**
+ * SUBTEST: csc-wedged
+ * Description: Force Xe device wedged after injecting a failure in CSC
+ */
igt_main
{
struct drm_xe_engine_class_instance *hwe;
@@ -300,12 +313,35 @@ igt_main
igt_assert_f(str[0] != '\0', "Failed to read wedged_mode from debugfs!\n");
}
+ igt_subtest("csc-wedged") {
+ igt_require(igt_debugfs_exists(fd, "inject_csc_hw_error/probability",
+ O_RDWR));
+ igt_debugfs_write(fd, "inject_csc_hw_error/verbose", "1");
+
+ igt_assert_eq(simple_ioctl(fd), 0);
+ ignore_wedged_in_dmesg();
+ force_wedged_csc_error(fd);
+
+ drm_close_driver(fd);
+ igt_kmod_rebind("xe", pci_slot);
+ fd = drm_open_driver(DRIVER_XE);
+
+ igt_assert_eq(simple_ioctl(fd), 0);
+ xe_for_each_engine(fd, hwe)
+ simple_exec(fd, hwe);
+ }
+
igt_fixture {
if (igt_debugfs_exists(fd, "fail_gt_reset/probability", O_RDWR)) {
igt_debugfs_write(fd, "fail_gt_reset/probability", "0");
igt_debugfs_write(fd, "fail_gt_reset/times", "1");
}
+ if (igt_debugfs_exists(fd, "inject_csc_hw_error/probability", O_RDWR)) {
+ igt_debugfs_write(fd, "inject_csc_hw_error/probability", "0");
+ igt_debugfs_write(fd, "inject_csc_hw_error/times", "1");
+ }
+
/* Tests might have failed, force a rebind before exiting */
drm_close_driver(fd);
igt_kmod_rebind("xe", pci_slot);
--
2.43.0
More information about the igt-dev
mailing list