[PATCH igt 8/9] msm/mapping: Add wait for stall-on-fault to re-arm
Rob Clark
robin.clark at oss.qualcomm.com
Mon Jun 30 18:09:02 UTC 2025
From: Rob Clark <rob.clark at oss.qualcomm.com>
Newer kernels disable stall-on-fault for a grace period, to avoid a
flood of faults causing instability with memory translations that
the hw attempts with the translation stalled. Fortunately it adds a
debugfs file so we can know how long we need to wait for stall-on-
fault to be re-enabled.
Signed-off-by: Rob Clark <rob.clark at oss.qualcomm.com>
---
tests/msm/msm_mapping.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/tests/msm/msm_mapping.c b/tests/msm/msm_mapping.c
index 978ea18375dd..7e2f5c7eadc8 100644
--- a/tests/msm/msm_mapping.c
+++ b/tests/msm/msm_mapping.c
@@ -74,6 +74,30 @@ get_and_clear_devcore(int timeout_ms)
return buf;
}
+static void
+wait_for_stall_on_fault(int drm_fd)
+{
+ char buf[64] = "\0";
+
+ do {
+ int us;
+
+ igt_debugfs_read(drm_fd, "stall_reenable_time_us", buf);
+ if (!strlen(buf)) {
+ /* Not supported on older kernels: */
+ return;
+ }
+
+ us = atoi(buf);
+ if (!us) {
+ /* Done waiting: */
+ return;
+ }
+
+ usleep(us);
+ } while (true);
+}
+
/*
* Helper to find named buffer address
*/
@@ -224,6 +248,11 @@ do_mapping_test(struct msm_pipe *pipe, const char *buffername, bool write)
ret = sscanf(s, " - iova=%"PRIx64, &fault_addr);
igt_fail_on(ret != 1);
igt_fail_on(addr != fault_addr);
+
+ /* Wait for stall-on-fault to re-enable, otherwise the next sub-test
+ * would not generate a devcore:
+ */
+ wait_for_stall_on_fault(pipe->dev->fd);
}
/*
--
2.50.0
More information about the igt-dev
mailing list