* [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1%
@ 2026-04-16 14:45 Jason-JH Lin
2026-04-16 15:00 ` Ville Syrjälä
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Jason-JH Lin @ 2026-04-16 14:45 UTC (permalink / raw)
To: igt-dev, Karthik B S, Swati Sharma, Jani, Jeevan, Kamil Konieczny,
Fei Shao
Cc: Juha-Pekka Heikkila, Bhanuprakash Modem, Jason-JH Lin,
Paul-PL Chen, Nancy Lin, Singo Chang, Gil Dekel, Yacoub,
Project_Global_Chrome_Upstream_Group
The original check_timings() validation required vblank intervals to be
within 1 scanline (~15us for 1080p60) which is overly strict and causes
false failures due to userspace measurement overhead.
Changes:
- Keep original strict checks (1 scanline, 1.718 sigma) as warnings only
- Add relaxed validation with 1% relative tolerance for pass/fail
- Use 3 sigma threshold (99.7% confidence) instead of 1.718 sigma (90%)
Rationale:
Hardware specs (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance, which
translates to ±0.5% frame time due to inverse relationship. However,
userspace measurement via read() syscall adds ~0.3-0.5% overhead from:
- Interrupt latency and scheduling delays (5-50 us)
- System call overhead (1-5 us)
- Variable delays depending on system load
Total tolerance: ±0.5% (hardware) + ~0.5% (software) = ±1.0%
This makes the test ~11x more tolerant while still detecting real timing
issues and aligning with industry hardware specifications.
Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
Suggested-by: Jeevain B <jeevan.b@intel.com>
---
tests/kms_setmode.c | 71 +++++++++++++++++++++++++++++++++++++--------
1 file changed, 59 insertions(+), 12 deletions(-)
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index 1f2849bc26cf..b452f8a9e997 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -495,6 +495,7 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
double mean;
double stddev;
int n;
+ bool strict_failed = false;
memset(&wait, 0, sizeof(wait));
wait.request.type = kmstest_get_vbl_flag(crtc_idx);
@@ -563,10 +564,9 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
/* 99.7% samples within one scanline on each side of mean */
if (accuracy >= line_time(kmode)) {
- igt_info("vblank accuracy (%.3fus, %.1f%%) worse than a scanline (%.3fus)\n",
- accuracy, 100 * accuracy / mean, line_time(kmode));
-
- return false;
+ igt_warn("vblank accuracy (%.3fus, %.1f%%) worse than a scanline (%.3fus)\n",
+ accuracy, 100 * accuracy / mean, line_time(kmode));
+ strict_failed = true;
}
/* At least 90% of frame times fall within the one scanline on each
@@ -591,14 +591,61 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
* https://en.wikipedia.org/wiki/Standard_deviation#Rules_for_normally_distributed_data
*/
if (fabs(mean - expected) >= max(line_time(kmode), 1.718 * stddev)) {
- igt_info("vblank interval differs from modeline! expected %.1fus, "
- "measured %1.fus +- %.3fus, difference %.1fus (%.1f sigma, %.1f scanlines)\n",
- expected, mean, stddev,
- fabs(mean - expected),
- fabs(mean - expected) / stddev,
- fabs(mean - expected) / line_time(kmode));
-
- return false;
+ igt_warn("vblank interval differs from modeline! expected %.1fus, "
+ "measured %1.fus +- %.3fus, difference %.1fus "
+ "(%.1f sigma, %.1f scanlines)\n",
+ expected, mean, stddev,
+ fabs(mean - expected),
+ fabs(mean - expected) / stddev,
+ fabs(mean - expected) / line_time(kmode));
+ strict_failed = true;
+ }
+
+ if (strict_failed) {
+ /* Relaxed validation: 1% relative tolerance for accuracy and deviation
+ *
+ * Hardware specifications (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance.
+ * Since frame_time = (htotal × vtotal) / pixel_clock, the relationship is
+ * inverse: ±0.5% pixel clock → ±0.5% frame time (in opposite direction).
+ *
+ * However, userspace measurement introduces additional overhead (~0.3-0.5%):
+ * - Interrupt latency and scheduling delays (5-50 μs)
+ * - System call overhead for read() (1-5 μs)
+ * - Variable delays depending on system load
+ *
+ * Total tolerance: ±0.5% (hardware) + ~0.5% (software) ≈ ±1.0%
+ *
+ * For stricter validation matching hardware spec only, use 0.005 (0.5%),
+ * but expect potential false failures due to measurement noise.
+ */
+ double tolerance_pct = 0.01; /* 1% tolerance */
+ double tolerance_us = expected * tolerance_pct;
+ double relative_accuracy = accuracy / expected;
+
+ /* Check 1: 99.7% samples within 1% of the mean */
+ if (accuracy >= tolerance_us) {
+ igt_info("FAIL: vblank accuracy (%.3fus, %.2f%%) exceeds 1%% tolerance "
+ "(%.3fus)\n",
+ accuracy, 100 * relative_accuracy, tolerance_us);
+ return false;
+ }
+
+ /* Check 2: Mean within 1% of expected, or within 3 sigma (99.7% confidence) */
+ if (fabs(mean - expected) >= max(tolerance_us, 3.0 * stddev)) {
+ igt_info("FAIL: vblank interval differs from expected! expected %.1fus, "
+ "measured %.1fus +- %.3fus, difference %.1fus "
+ "(%.1f sigma, %.2f%%), "
+ "exceeds 1%% tolerance or 3-sigma threshold\n",
+ expected, mean, stddev,
+ fabs(mean - expected),
+ fabs(mean - expected) / stddev,
+ 100 * fabs(mean - expected) / expected);
+ return false;
+ }
+
+ igt_info("Passed relaxed validation (strict failed)\n");
+ } else {
+ igt_info("Passed strict validation\n");
}
return true;
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1%
2026-04-16 14:45 [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% Jason-JH Lin
@ 2026-04-16 15:00 ` Ville Syrjälä
2026-04-16 15:29 ` Ville Syrjälä
2026-04-17 0:04 ` ✓ Xe.CI.BAT: success for tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2) Patchwork
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Ville Syrjälä @ 2026-04-16 15:00 UTC (permalink / raw)
To: Jason-JH Lin
Cc: igt-dev, Karthik B S, Swati Sharma, Jani, Jeevan, Kamil Konieczny,
Fei Shao, Juha-Pekka Heikkila, Bhanuprakash Modem, Paul-PL Chen,
Nancy Lin, Singo Chang, Gil Dekel, Yacoub,
Project_Global_Chrome_Upstream_Group
On Thu, Apr 16, 2026 at 10:45:28PM +0800, Jason-JH Lin wrote:
> The original check_timings() validation required vblank intervals to be
> within 1 scanline (~15us for 1080p60) which is overly strict and causes
> false failures due to userspace measurement overhead.
>
> Changes:
> - Keep original strict checks (1 scanline, 1.718 sigma) as warnings only
> - Add relaxed validation with 1% relative tolerance for pass/fail
> - Use 3 sigma threshold (99.7% confidence) instead of 1.718 sigma (90%)
>
> Rationale:
> Hardware specs (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance, which
> translates to ±0.5% frame time due to inverse relationship. However,
> userspace measurement via read() syscall adds ~0.3-0.5% overhead from:
read() overhead is irrelevant here. This is measuring the accuracy
of the kernel generated vblank event timestamps. If you are having
problems with this then that would indicate your kernel driver isn't
generating particularly good timestamps, or it's using a dotclock that
doesn't quite match what userspace specified originally.
> - Interrupt latency and scheduling delays (5-50 us)
> - System call overhead (1-5 us)
> - Variable delays depending on system load
>
> Total tolerance: ±0.5% (hardware) + ~0.5% (software) = ±1.0%
>
> This makes the test ~11x more tolerant while still detecting real timing
> issues and aligning with industry hardware specifications.
>
> Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
> Suggested-by: Jeevain B <jeevan.b@intel.com>
> ---
> tests/kms_setmode.c | 71 +++++++++++++++++++++++++++++++++++++--------
> 1 file changed, 59 insertions(+), 12 deletions(-)
>
> diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> index 1f2849bc26cf..b452f8a9e997 100644
> --- a/tests/kms_setmode.c
> +++ b/tests/kms_setmode.c
> @@ -495,6 +495,7 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
> double mean;
> double stddev;
> int n;
> + bool strict_failed = false;
>
> memset(&wait, 0, sizeof(wait));
> wait.request.type = kmstest_get_vbl_flag(crtc_idx);
> @@ -563,10 +564,9 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
>
> /* 99.7% samples within one scanline on each side of mean */
> if (accuracy >= line_time(kmode)) {
> - igt_info("vblank accuracy (%.3fus, %.1f%%) worse than a scanline (%.3fus)\n",
> - accuracy, 100 * accuracy / mean, line_time(kmode));
> -
> - return false;
> + igt_warn("vblank accuracy (%.3fus, %.1f%%) worse than a scanline (%.3fus)\n",
> + accuracy, 100 * accuracy / mean, line_time(kmode));
> + strict_failed = true;
> }
>
> /* At least 90% of frame times fall within the one scanline on each
> @@ -591,14 +591,61 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
> * https://en.wikipedia.org/wiki/Standard_deviation#Rules_for_normally_distributed_data
> */
> if (fabs(mean - expected) >= max(line_time(kmode), 1.718 * stddev)) {
> - igt_info("vblank interval differs from modeline! expected %.1fus, "
> - "measured %1.fus +- %.3fus, difference %.1fus (%.1f sigma, %.1f scanlines)\n",
> - expected, mean, stddev,
> - fabs(mean - expected),
> - fabs(mean - expected) / stddev,
> - fabs(mean - expected) / line_time(kmode));
> -
> - return false;
> + igt_warn("vblank interval differs from modeline! expected %.1fus, "
> + "measured %1.fus +- %.3fus, difference %.1fus "
> + "(%.1f sigma, %.1f scanlines)\n",
> + expected, mean, stddev,
> + fabs(mean - expected),
> + fabs(mean - expected) / stddev,
> + fabs(mean - expected) / line_time(kmode));
> + strict_failed = true;
> + }
> +
> + if (strict_failed) {
> + /* Relaxed validation: 1% relative tolerance for accuracy and deviation
> + *
> + * Hardware specifications (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance.
> + * Since frame_time = (htotal × vtotal) / pixel_clock, the relationship is
> + * inverse: ±0.5% pixel clock → ±0.5% frame time (in opposite direction).
> + *
> + * However, userspace measurement introduces additional overhead (~0.3-0.5%):
> + * - Interrupt latency and scheduling delays (5-50 μs)
> + * - System call overhead for read() (1-5 μs)
> + * - Variable delays depending on system load
> + *
> + * Total tolerance: ±0.5% (hardware) + ~0.5% (software) ≈ ±1.0%
> + *
> + * For stricter validation matching hardware spec only, use 0.005 (0.5%),
> + * but expect potential false failures due to measurement noise.
> + */
> + double tolerance_pct = 0.01; /* 1% tolerance */
> + double tolerance_us = expected * tolerance_pct;
> + double relative_accuracy = accuracy / expected;
> +
> + /* Check 1: 99.7% samples within 1% of the mean */
> + if (accuracy >= tolerance_us) {
> + igt_info("FAIL: vblank accuracy (%.3fus, %.2f%%) exceeds 1%% tolerance "
> + "(%.3fus)\n",
> + accuracy, 100 * relative_accuracy, tolerance_us);
> + return false;
> + }
> +
> + /* Check 2: Mean within 1% of expected, or within 3 sigma (99.7% confidence) */
> + if (fabs(mean - expected) >= max(tolerance_us, 3.0 * stddev)) {
> + igt_info("FAIL: vblank interval differs from expected! expected %.1fus, "
> + "measured %.1fus +- %.3fus, difference %.1fus "
> + "(%.1f sigma, %.2f%%), "
> + "exceeds 1%% tolerance or 3-sigma threshold\n",
> + expected, mean, stddev,
> + fabs(mean - expected),
> + fabs(mean - expected) / stddev,
> + 100 * fabs(mean - expected) / expected);
> + return false;
> + }
> +
> + igt_info("Passed relaxed validation (strict failed)\n");
> + } else {
> + igt_info("Passed strict validation\n");
> }
>
> return true;
> --
> 2.43.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1%
2026-04-16 15:00 ` Ville Syrjälä
@ 2026-04-16 15:29 ` Ville Syrjälä
2026-04-17 8:50 ` Jason-JH Lin (林睿祥)
0 siblings, 1 reply; 7+ messages in thread
From: Ville Syrjälä @ 2026-04-16 15:29 UTC (permalink / raw)
To: Jason-JH Lin
Cc: igt-dev, Karthik B S, Swati Sharma, Jani, Jeevan, Kamil Konieczny,
Fei Shao, Juha-Pekka Heikkila, Bhanuprakash Modem, Paul-PL Chen,
Nancy Lin, Singo Chang, Gil Dekel, Yacoub,
Project_Global_Chrome_Upstream_Group
On Thu, Apr 16, 2026 at 06:00:58PM +0300, Ville Syrjälä wrote:
> On Thu, Apr 16, 2026 at 10:45:28PM +0800, Jason-JH Lin wrote:
> > The original check_timings() validation required vblank intervals to be
> > within 1 scanline (~15us for 1080p60) which is overly strict and causes
> > false failures due to userspace measurement overhead.
> >
> > Changes:
> > - Keep original strict checks (1 scanline, 1.718 sigma) as warnings only
> > - Add relaxed validation with 1% relative tolerance for pass/fail
> > - Use 3 sigma threshold (99.7% confidence) instead of 1.718 sigma (90%)
> >
> > Rationale:
> > Hardware specs (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance, which
> > translates to ±0.5% frame time due to inverse relationship. However,
> > userspace measurement via read() syscall adds ~0.3-0.5% overhead from:
>
> read() overhead is irrelevant here. This is measuring the accuracy
> of the kernel generated vblank event timestamps. If you are having
> problems with this then that would indicate your kernel driver isn't
> generating particularly good timestamps, or it's using a dotclock that
> doesn't quite match what userspace specified originally.
>
> > - Interrupt latency and scheduling delays (5-50 us)
> > - System call overhead (1-5 us)
> > - Variable delays depending on system load
> >
> > Total tolerance: ±0.5% (hardware) + ~0.5% (software) = ±1.0%
> >
> > This makes the test ~11x more tolerant while still detecting real timing
> > issues and aligning with industry hardware specifications.
> >
> > Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
> > Suggested-by: Jeevain B <jeevan.b@intel.com>
> > ---
> > tests/kms_setmode.c | 71 +++++++++++++++++++++++++++++++++++++--------
> > 1 file changed, 59 insertions(+), 12 deletions(-)
> >
> > diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> > index 1f2849bc26cf..b452f8a9e997 100644
> > --- a/tests/kms_setmode.c
> > +++ b/tests/kms_setmode.c
> > @@ -495,6 +495,7 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
> > double mean;
> > double stddev;
> > int n;
> > + bool strict_failed = false;
> >
> > memset(&wait, 0, sizeof(wait));
> > wait.request.type = kmstest_get_vbl_flag(crtc_idx);
> > @@ -563,10 +564,9 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
> >
> > /* 99.7% samples within one scanline on each side of mean */
> > if (accuracy >= line_time(kmode)) {
> > - igt_info("vblank accuracy (%.3fus, %.1f%%) worse than a scanline (%.3fus)\n",
> > - accuracy, 100 * accuracy / mean, line_time(kmode));
> > -
> > - return false;
> > + igt_warn("vblank accuracy (%.3fus, %.1f%%) worse than a scanline (%.3fus)\n",
> > + accuracy, 100 * accuracy / mean, line_time(kmode));
> > + strict_failed = true;
Failing this would indicate the driver isn't generating particularly
good timestamps.
> > }
> >
> > /* At least 90% of frame times fall within the one scanline on each
> > @@ -591,14 +591,61 @@ static bool check_timings(int crtc_idx, const drmModeModeInfo *kmode)
> > * https://en.wikipedia.org/wiki/Standard_deviation#Rules_for_normally_distributed_data
> > */
> > if (fabs(mean - expected) >= max(line_time(kmode), 1.718 * stddev)) {
And assuming the timestamps were good, failing this would indicate the
actual timings don't quite match what userspace specified (eg. dotclock
could be a bit off). I suppose we should allow that VESA specified
.5% error here.
> > - igt_info("vblank interval differs from modeline! expected %.1fus, "
> > - "measured %1.fus +- %.3fus, difference %.1fus (%.1f sigma, %.1f scanlines)\n",
> > - expected, mean, stddev,
> > - fabs(mean - expected),
> > - fabs(mean - expected) / stddev,
> > - fabs(mean - expected) / line_time(kmode));
> > -
> > - return false;
> > + igt_warn("vblank interval differs from modeline! expected %.1fus, "
> > + "measured %1.fus +- %.3fus, difference %.1fus "
> > + "(%.1f sigma, %.1f scanlines)\n",
> > + expected, mean, stddev,
> > + fabs(mean - expected),
> > + fabs(mean - expected) / stddev,
> > + fabs(mean - expected) / line_time(kmode));
> > + strict_failed = true;
> > + }
> > +
> > + if (strict_failed) {
> > + /* Relaxed validation: 1% relative tolerance for accuracy and deviation
> > + *
> > + * Hardware specifications (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance.
> > + * Since frame_time = (htotal × vtotal) / pixel_clock, the relationship is
> > + * inverse: ±0.5% pixel clock → ±0.5% frame time (in opposite direction).
> > + *
> > + * However, userspace measurement introduces additional overhead (~0.3-0.5%):
> > + * - Interrupt latency and scheduling delays (5-50 μs)
> > + * - System call overhead for read() (1-5 μs)
> > + * - Variable delays depending on system load
> > + *
> > + * Total tolerance: ±0.5% (hardware) + ~0.5% (software) ≈ ±1.0%
> > + *
> > + * For stricter validation matching hardware spec only, use 0.005 (0.5%),
> > + * but expect potential false failures due to measurement noise.
> > + */
> > + double tolerance_pct = 0.01; /* 1% tolerance */
> > + double tolerance_us = expected * tolerance_pct;
> > + double relative_accuracy = accuracy / expected;
> > +
> > + /* Check 1: 99.7% samples within 1% of the mean */
> > + if (accuracy >= tolerance_us) {
> > + igt_info("FAIL: vblank accuracy (%.3fus, %.2f%%) exceeds 1%% tolerance "
> > + "(%.3fus)\n",
> > + accuracy, 100 * relative_accuracy, tolerance_us);
> > + return false;
> > + }
> > +
> > + /* Check 2: Mean within 1% of expected, or within 3 sigma (99.7% confidence) */
> > + if (fabs(mean - expected) >= max(tolerance_us, 3.0 * stddev)) {
> > + igt_info("FAIL: vblank interval differs from expected! expected %.1fus, "
> > + "measured %.1fus +- %.3fus, difference %.1fus "
> > + "(%.1f sigma, %.2f%%), "
> > + "exceeds 1%% tolerance or 3-sigma threshold\n",
> > + expected, mean, stddev,
> > + fabs(mean - expected),
> > + fabs(mean - expected) / stddev,
> > + 100 * fabs(mean - expected) / expected);
> > + return false;
> > + }
> > +
> > + igt_info("Passed relaxed validation (strict failed)\n");
> > + } else {
> > + igt_info("Passed strict validation\n");
> > }
> >
> > return true;
> > --
> > 2.43.0
>
> --
> Ville Syrjälä
> Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✓ Xe.CI.BAT: success for tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2)
2026-04-16 14:45 [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% Jason-JH Lin
2026-04-16 15:00 ` Ville Syrjälä
@ 2026-04-17 0:04 ` Patchwork
2026-04-17 0:08 ` ✗ i915.CI.BAT: failure " Patchwork
2026-04-17 2:31 ` ✗ Xe.CI.FULL: " Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-04-17 0:04 UTC (permalink / raw)
To: Jason-JH Lin; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 1803 bytes --]
== Series Details ==
Series: tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2)
URL : https://patchwork.freedesktop.org/series/164961/
State : success
== Summary ==
CI Bug Log - changes from XEIGT_8863_BAT -> XEIGTPW_15001_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in XEIGTPW_15001_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@unbind-rebind:
- bat-bmg-2: [PASS][1] -> [ABORT][2] ([Intel XE#7249] / [Intel XE#7578])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/bat-bmg-2/igt@core_hotunplug@unbind-rebind.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/bat-bmg-2/igt@core_hotunplug@unbind-rebind.html
[Intel XE#7249]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7249
[Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578
Build changes
-------------
* IGT: IGT_8863 -> IGTPW_15001
* Linux: xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454 -> xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55
IGTPW_15001: 6ba5a61a913adfbdccf86f3351be3fbadde1f379 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454: ff84b38d86b994ebb03d940be1c73a63e231f454
xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55: 2a1c604bebed8cbbe6aea00f761777eed424dc55
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/index.html
[-- Attachment #2: Type: text/html, Size: 2372 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✗ i915.CI.BAT: failure for tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2)
2026-04-16 14:45 [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% Jason-JH Lin
2026-04-16 15:00 ` Ville Syrjälä
2026-04-17 0:04 ` ✓ Xe.CI.BAT: success for tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2) Patchwork
@ 2026-04-17 0:08 ` Patchwork
2026-04-17 2:31 ` ✗ Xe.CI.FULL: " Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-04-17 0:08 UTC (permalink / raw)
To: Jason-JH Lin; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 3342 bytes --]
== Series Details ==
Series: tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2)
URL : https://patchwork.freedesktop.org/series/164961/
State : failure
== Summary ==
CI Bug Log - changes from IGT_8863 -> IGTPW_15001
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with IGTPW_15001 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in IGTPW_15001, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/index.html
Participating hosts (42 -> 40)
------------------------------
Missing (2): bat-dg2-13 fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in IGTPW_15001:
### IGT changes ###
#### Possible regressions ####
* igt@i915_selftest@live@workarounds:
- bat-twl-1: [PASS][1] -> [ABORT][2] +1 other test abort
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/bat-twl-1/igt@i915_selftest@live@workarounds.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/bat-twl-1/igt@i915_selftest@live@workarounds.html
Known issues
------------
Here are the changes found in IGTPW_15001 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@dmabuf@all-tests:
- fi-skl-6600u: NOTRUN -> [SKIP][3]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/fi-skl-6600u/igt@dmabuf@all-tests.html
* igt@i915_selftest@live:
- bat-mtlp-8: [PASS][4] -> [DMESG-FAIL][5] ([i915#12061]) +1 other test dmesg-fail
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/bat-mtlp-8/igt@i915_selftest@live.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/bat-mtlp-8/igt@i915_selftest@live.html
#### Possible fixes ####
* igt@i915_selftest@live:
- fi-skl-6600u: [INCOMPLETE][6] ([i915#15859]) -> [PASS][7]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/fi-skl-6600u/igt@i915_selftest@live.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/fi-skl-6600u/igt@i915_selftest@live.html
* igt@i915_selftest@live@gtt:
- fi-skl-6600u: [INCOMPLETE][8] -> [PASS][9]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8863/fi-skl-6600u/igt@i915_selftest@live@gtt.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/fi-skl-6600u/igt@i915_selftest@live@gtt.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#15859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15859
Build changes
-------------
* CI: CI-20190529 -> None
* IGT: IGT_8863 -> IGTPW_15001
CI-20190529: 20190529
CI_DRM_18347: 2a1c604bebed8cbbe6aea00f761777eed424dc55 @ git://anongit.freedesktop.org/gfx-ci/linux
IGTPW_15001: 6ba5a61a913adfbdccf86f3351be3fbadde1f379 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15001/index.html
[-- Attachment #2: Type: text/html, Size: 4075 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* ✗ Xe.CI.FULL: failure for tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2)
2026-04-16 14:45 [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% Jason-JH Lin
` (2 preceding siblings ...)
2026-04-17 0:08 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2026-04-17 2:31 ` Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2026-04-17 2:31 UTC (permalink / raw)
To: Jason-JH Lin; +Cc: igt-dev
[-- Attachment #1: Type: text/plain, Size: 15392 bytes --]
== Series Details ==
Series: tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2)
URL : https://patchwork.freedesktop.org/series/164961/
State : failure
== Summary ==
CI Bug Log - changes from XEIGT_8863_FULL -> XEIGTPW_15001_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with XEIGTPW_15001_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in XEIGTPW_15001_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in XEIGTPW_15001_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ad-dp2-hdmi-a3:
- shard-bmg: [PASS][1] -> [FAIL][2] +4 other tests fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-5/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ad-dp2-hdmi-a3.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-3/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ad-dp2-hdmi-a3.html
New tests
---------
New tests have been introduced between XEIGT_8863_FULL and XEIGTPW_15001_FULL:
### New IGT tests (9) ###
* igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb2101010:
- Statuses : 1 pass(s)
- Exec time: [0.0] s
* igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb16161616f:
- Statuses : 1 pass(s)
- Exec time: [1.23] s
* igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010:
- Statuses : 1 pass(s)
- Exec time: [1.48] s
* igt@xe_render_copy@render-stress-0-copies:
- Statuses : 2 pass(s)
- Exec time: [3.22, 3.23] s
* igt@xe_render_copy@render-stress-1-copies:
- Statuses : 2 pass(s)
- Exec time: [3.23, 3.24] s
* igt@xe_render_copy@render-stress-2-copies:
- Statuses : 2 pass(s)
- Exec time: [3.23, 3.24] s
* igt@xe_render_copy@render-stress-4-copies:
- Statuses : 2 pass(s)
- Exec time: [3.24] s
* igt@xe_spin_batch@spin-mem-copy:
- Statuses : 2 pass(s)
- Exec time: [0.11, 0.24] s
Known issues
------------
Here are the changes found in XEIGTPW_15001_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][3] -> [INCOMPLETE][4] ([Intel XE#7084]) +1 other test incomplete
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-10/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#6974])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-3/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#7178] / [Intel XE#7351])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-1/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2311]) +3 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][8] -> [SKIP][9] ([Intel XE#1503])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_hdr@invalid-hdr.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-6/igt@kms_hdr@invalid-hdr.html
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: [PASS][10] -> [FAIL][11] ([Intel XE#7340] / [Intel XE#7504])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-4/igt@kms_pm_dc@dc5-dpms.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-lnl-5/igt@kms_pm_dc@dc5-dpms.html
* igt@kms_pm_dc@dc6-dpms:
- shard-lnl: [PASS][12] -> [FAIL][13] ([Intel XE#7340])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-4/igt@kms_pm_dc@dc6-dpms.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-lnl-3/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_psr@fbc-psr2-primary-blt:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2234] / [Intel XE#2850])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-7/igt@kms_psr@fbc-psr2-primary-blt.html
* igt@kms_vrr@flip-dpms:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#1499])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-9/igt@kms_vrr@flip-dpms.html
* igt@xe_exec_multi_queue@two-queues-preempt-mode-dyn-priority:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#6874])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-4/igt@xe_exec_multi_queue@two-queues-preempt-mode-dyn-priority.html
* igt@xe_module_load@force-load:
- shard-bmg: [PASS][17] -> [ABORT][18] ([Intel XE#7578])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-5/igt@xe_module_load@force-load.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-3/igt@xe_module_load@force-load.html
* igt@xe_sriov_flr@flr-vf1-clear:
- shard-bmg: [PASS][19] -> [FAIL][20] ([Intel XE#6569])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-8/igt@xe_sriov_flr@flr-vf1-clear.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-1/igt@xe_sriov_flr@flr-vf1-clear.html
#### Possible fixes ####
* igt@intel_hwmon@hwmon-write:
- shard-bmg: [FAIL][21] ([Intel XE#7445]) -> [PASS][22]
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-10/igt@intel_hwmon@hwmon-write.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-2/igt@intel_hwmon@hwmon-write.html
* igt@kms_flip@2x-absolute-wf_vblank-interruptible@bc-dp2-hdmi-a3:
- shard-bmg: [FAIL][23] -> [PASS][24] +3 other tests pass
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_flip@2x-absolute-wf_vblank-interruptible@bc-dp2-hdmi-a3.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-9/igt@kms_flip@2x-absolute-wf_vblank-interruptible@bc-dp2-hdmi-a3.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3:
- shard-bmg: [FAIL][25] ([Intel XE#3321]) -> [PASS][26] +1 other test pass
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-10/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][27] ([Intel XE#301]) -> [PASS][28] +3 other tests pass
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_hdmi_inject@inject-audio:
- shard-bmg: [SKIP][29] ([Intel XE#7308]) -> [PASS][30]
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_hdmi_inject@inject-audio.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-7/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_universal_plane@disable-primary-vs-flip:
- shard-bmg: [DMESG-WARN][31] ([Intel XE#7725]) -> [PASS][32] +1 other test pass
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_universal_plane@disable-primary-vs-flip.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-10/igt@kms_universal_plane@disable-primary-vs-flip.html
* igt@kms_vrr@flipline:
- shard-lnl: [FAIL][33] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][34] +1 other test pass
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-2/igt@kms_vrr@flipline.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-lnl-2/igt@kms_vrr@flipline.html
* igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
- shard-lnl: [FAIL][35] ([Intel XE#2142]) -> [PASS][36] +1 other test pass
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-5/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-lnl-5/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [INCOMPLETE][37] ([Intel XE#6321]) -> [PASS][38] +1 other test pass
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-4/igt@xe_evict@evict-mixed-many-threads-small.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-9/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma:
- shard-lnl: [FAIL][39] ([Intel XE#5625]) -> [PASS][40] +1 other test pass
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-lnl-1/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-bmg: [FAIL][41] ([Intel XE#6569]) -> [PASS][42]
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-7/igt@xe_sriov_flr@flr-each-isolation.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-9/igt@xe_sriov_flr@flr-each-isolation.html
#### Warnings ####
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt:
- shard-bmg: [SKIP][43] ([Intel XE#2312]) -> [SKIP][44] ([Intel XE#2311])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][45] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][46] ([Intel XE#3544])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-2/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [FAIL][47] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][48] ([Intel XE#2426] / [Intel XE#5848])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][49] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][50] ([Intel XE#2426] / [Intel XE#5848])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8863/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
[Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445
[Intel XE#7504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7504
[Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578
[Intel XE#7725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7725
Build changes
-------------
* IGT: IGT_8863 -> IGTPW_15001
* Linux: xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454 -> xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55
IGTPW_15001: 6ba5a61a913adfbdccf86f3351be3fbadde1f379 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4917-ff84b38d86b994ebb03d940be1c73a63e231f454: ff84b38d86b994ebb03d940be1c73a63e231f454
xe-4918-2a1c604bebed8cbbe6aea00f761777eed424dc55: 2a1c604bebed8cbbe6aea00f761777eed424dc55
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15001/index.html
[-- Attachment #2: Type: text/html, Size: 17244 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1%
2026-04-16 15:29 ` Ville Syrjälä
@ 2026-04-17 8:50 ` Jason-JH Lin (林睿祥)
0 siblings, 0 replies; 7+ messages in thread
From: Jason-JH Lin (林睿祥) @ 2026-04-17 8:50 UTC (permalink / raw)
To: ville.syrjala@linux.intel.com
Cc: karthik.b.s@intel.com, swati2.sharma@intel.com,
jani.nikula@intel.com, juhapekka.heikkila@gmail.com,
Singo Chang (張興國), jeevan.b@intel.com,
bhanuprakash.modem@gmail.com, igt-dev@lists.freedesktop.org,
Paul-pl Chen (陳柏霖),
kamil.konieczny@linux.intel.com,
Project_Global_Chrome_Upstream_Group,
Nancy Lin (林欣螢), fshao@chromium.org,
markyacoub@chromium.org, gildekel@google.com
On Thu, 2026-04-16 at 18:29 +0300, Ville Syrjälä wrote:
> On Thu, Apr 16, 2026 at 06:00:58PM +0300, Ville Syrjälä wrote:
> > On Thu, Apr 16, 2026 at 10:45:28PM +0800, Jason-JH Lin wrote:
> > > The original check_timings() validation required vblank intervals
> > > to be
> > > within 1 scanline (~15us for 1080p60) which is overly strict and
> > > causes
> > > false failures due to userspace measurement overhead.
> > >
> > > Changes:
> > > - Keep original strict checks (1 scanline, 1.718 sigma) as
> > > warnings only
> > > - Add relaxed validation with 1% relative tolerance for pass/fail
> > > - Use 3 sigma threshold (99.7% confidence) instead of 1.718 sigma
> > > (90%)
> > >
> > > Rationale:
> > > Hardware specs (VESA/HDMI/DP) allow ±0.5% pixel clock tolerance,
> > > which
> > > translates to ±0.5% frame time due to inverse relationship.
> > > However,
> > > userspace measurement via read() syscall adds ~0.3-0.5% overhead
> > > from:
> >
> > read() overhead is irrelevant here. This is measuring the accuracy
> > of the kernel generated vblank event timestamps. If you are having
> > problems with this then that would indicate your kernel driver
> > isn't
> > generating particularly good timestamps, or it's using a dotclock
> > that
> > doesn't quite match what userspace specified originally.
> >
> > > - Interrupt latency and scheduling delays (5-50 us)
> > > - System call overhead (1-5 us)
> > > - Variable delays depending on system load
> > >
> > > Total tolerance: ±0.5% (hardware) + ~0.5% (software) = ±1.0%
> > >
> > > This makes the test ~11x more tolerant while still detecting real
> > > timing
> > > issues and aligning with industry hardware specifications.
> > >
> > > Signed-off-by: Jason-JH Lin <jason-jh.lin@mediatek.com>
> > > Suggested-by: Jeevain B <jeevan.b@intel.com>
> > > ---
> > > tests/kms_setmode.c | 71 +++++++++++++++++++++++++++++++++++++--
> > > ------
> > > 1 file changed, 59 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
> > > index 1f2849bc26cf..b452f8a9e997 100644
> > > --- a/tests/kms_setmode.c
> > > +++ b/tests/kms_setmode.c
> > > @@ -495,6 +495,7 @@ static bool check_timings(int crtc_idx, const
> > > drmModeModeInfo *kmode)
> > > double mean;
> > > double stddev;
> > > int n;
> > > + bool strict_failed = false;
> > >
> > > memset(&wait, 0, sizeof(wait));
> > > wait.request.type = kmstest_get_vbl_flag(crtc_idx);
> > > @@ -563,10 +564,9 @@ static bool check_timings(int crtc_idx,
> > > const drmModeModeInfo *kmode)
> > >
> > > /* 99.7% samples within one scanline on each side of
> > > mean */
> > > if (accuracy >= line_time(kmode)) {
> > > - igt_info("vblank accuracy (%.3fus, %.1f%%) worse
> > > than a scanline (%.3fus)\n",
> > > - accuracy, 100 * accuracy / mean,
> > > line_time(kmode));
> > > -
> > > - return false;
> > > + igt_warn("vblank accuracy (%.3fus, %.1f%%) worse
> > > than a scanline (%.3fus)\n",
> > > + accuracy, 100 * accuracy / mean,
> > > line_time(kmode));
> > > + strict_failed = true;
>
> Failing this would indicate the driver isn't generating particularly
> good timestamps.
>
> > > }
> > >
> > > /* At least 90% of frame times fall within the one
> > > scanline on each
> > > @@ -591,14 +591,61 @@ static bool check_timings(int crtc_idx,
> > > const drmModeModeInfo *kmode)
> > > *
> > > https://urldefense.com/v3/__https://en.wikipedia.org/wiki/Standard_deviation*Rules_for_normally_distributed_data__;Iw!!CTRNKA9wMg0ARbw!mn4DeRxVpp3Y-PmcRLBfMYD4u4qjPzmx5JvBQ1PYYCBiTI_ygLNR5s_T01CTM6Ti-vnDSzzPxB509bsBcxgFBERpcqqRgSO5QA$
> > >
> > > */
> > > if (fabs(mean - expected) >= max(line_time(kmode), 1.718
> > > * stddev)) {
>
> And assuming the timestamps were good, failing this would indicate
> the
> actual timings don't quite match what userspace specified (eg.
> dotclock
> could be a bit off). I suppose we should allow that VESA specified
> .5% error here.
Thank you for the review.
You are right that read() overhead is irrelevant here since
check_timings() is measuring kernel generated vblank event timestamps.
I will remove that part of the rationale.
Regarding the two checks:
For Check 1 (timestamp accuracy >= line_time): You pointed out that
failing this indicates the kernel driver isn't generating good
timestamps. We will investigate and fix MTK's vblank timestamp
implementation at the kernel driver level rather than relaxing
the test.
For Check 2 (mean deviation from expected): I will update the patch
to only relax this check to allow the VESA specified ±0.5% pixel clock
tolerance, and remove the read() overhead rationale from the commit
message.
Regards,
Jason-JH Lin
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-04-17 8:50 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-16 14:45 [PATCH i-g-t v2] tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% Jason-JH Lin
2026-04-16 15:00 ` Ville Syrjälä
2026-04-16 15:29 ` Ville Syrjälä
2026-04-17 8:50 ` Jason-JH Lin (林睿祥)
2026-04-17 0:04 ` ✓ Xe.CI.BAT: success for tests/kms_setmode: Relax vblank timing tolerance from 1 scanline to 1% (rev2) Patchwork
2026-04-17 0:08 ` ✗ i915.CI.BAT: failure " Patchwork
2026-04-17 2:31 ` ✗ Xe.CI.FULL: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox