[PATCH i-g-t] tests/kms_sysfs_edid_timing: Skip the first detect

Khaled Almahallawy khaled.almahallawy at intel.com
Sat May 18 00:33:45 UTC 2024


It is observed in some chrome devices that the first detect take a
long time due to PPS. In another device it was found the eDP panel
misbehaving and keep sending multiple long HPD during PPS which
trigger HPD storm warning. This first detect will always exceeds the
THRESHOLD_PER_CONNECTOR and will cause the test to fail.

Avoid that by skipping the measurement for the first detect.
Also adding more debug logs in the test and kernel to be able to
correlate the results.

Fixes: VLK-52052, VLK-56861

Cc: Swati Sharma <swati2.sharma at intel.com>
Cc: Mark Yacoub <markyacoub at chromium.org>
Cc: Shawn Lee <shawn.c.lee at intel.com>
Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
Signed-off-by: Khaled Almahallawy <khaled.almahallawy at intel.com>
---
 tests/kms_sysfs_edid_timing.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/tests/kms_sysfs_edid_timing.c b/tests/kms_sysfs_edid_timing.c
index dbc66c876..b7832dd83 100644
--- a/tests/kms_sysfs_edid_timing.c
+++ b/tests/kms_sysfs_edid_timing.c
@@ -50,7 +50,7 @@
 #define THRESHOLD_PER_CONNECTOR		150
 #define THRESHOLD_PER_CONNECTOR_MEAN	140
 #define THRESHOLD_ALL_CONNECTORS_MEAN	100
-#define CHECK_TIMES			15
+#define CHECK_TIMES			16
 
 IGT_TEST_DESCRIPTION("This test checks the time it takes to reprobe each "
 		     "connector and fails if either the time it takes for "
@@ -89,15 +89,25 @@ igt_simple_main
 		for (i = 0; i < CHECK_TIMES; i++) {
 			struct timespec ts = {};
 			int fd;
+			uint64_t current;
 
 			if ((fd = open(path, O_WRONLY)) < 0)
 				continue;
 
+			igt_kmsg(KMSG_DEBUG "%s: start detect\n", path);
 			igt_nsec_elapsed(&ts);
 			igt_ignore_warn(write(fd, "detect\n", 7));
-			igt_mean_add(&mean, igt_nsec_elapsed(&ts));
-
+			current = igt_nsec_elapsed(&ts);
+			igt_kmsg(KMSG_DEBUG "%s: end detect\n", path);
 			close(fd);
+
+			/* Skip first detect */
+			if(i == 0)
+				continue;
+
+			igt_mean_add(&mean, current);
+			igt_debug("%s: i=%d current=%02fdms mean.max=%02fms mean.min=%02fms\n",
+				de->d_name, i, current/1e6,  mean.max/1e6, mean.min/1e6);
 		}
 
 		igt_debug("%s: mean.max %.2fns, %.2fus, %.2fms, "
-- 
2.34.1



More information about the igt-dev mailing list