* [PATCH i-g-t] tests/unigraf_lt: Optimize DP lane count validations @ 2026-08-13 17:59 Mark Yacoub 2026-08-13 21:09 ` ✓ i915.CI.BAT: success for " Patchwork 2026-08-13 21:26 ` ✓ Xe.CI.BAT: " Patchwork 0 siblings, 2 replies; 3+ messages in thread From: Mark Yacoub @ 2026-08-13 17:59 UTC (permalink / raw) To: igt-dev; +Cc: Louis Chauvet, Mark Yacoub Some drivers dynamically optimize power by downshifting lane utilization if the current video mode (e.g., 1080p) has low bandwidth requirements, regardless of the physical ceiling. To avoid pointlessly testing artificially high lane mock ceilings that would result in false-negative failures, we introduce a pre-check in the lane count subtest. We safely pre-calculate the kernel's natural max lane utilization for the current mode through an unconstrained HPD sequence, allowing us to skip unachievable configurations. Signed-off-by: Mark Yacoub <markyacoub@google.com> --- tests/unigraf/unigraf_lt.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/tests/unigraf/unigraf_lt.c b/tests/unigraf/unigraf_lt.c index 81e6ecd3f..7b9a2fc27 100644 --- a/tests/unigraf/unigraf_lt.c +++ b/tests/unigraf/unigraf_lt.c @@ -103,12 +103,43 @@ int igt_main() igt_subtest_with_dynamic("unigraf-dp-lane-count") { int lane_counts[3] = {1, 2, 4}; + int max_natural_lanes = 0; int current_lanes; + /* + * Some drivers dynamically optimize power by downshifting lane + * utilization if the current video mode (e.g., 1080p) has low + * bandwidth requirements, regardless of the physical ceiling. + * + * To avoid pointlessly testing artificially high lane mock + * ceilings (e.g. testing 4 lanes when we know the driver adamantly + * refuses to use more than 1 or 2 for this mode), we first + * perform an unconstrained HPD sequence. We initialize the output + * and observe precisely how many lanes the kernel naturally demands. + */ + unigraf_reset(); + unigraf_set_max_lane_count(4); + unigraf_hpd_pulse(500000); + + igt_display_require_output(&display); + output = igt_output_from_connector(&display, connector); + igt_assert(output); + igt_dp_force_link_retrain(drm_fd, output, 2); + init_output_and_display_pattern(&display, output); + + max_natural_lanes = igt_dp_get_current_lane_count(drm_fd, output); + igt_info("Pre-check: Kernel naturally trains a maximum of %d lanes for the current mode.\n", + max_natural_lanes); + for (i = 0; i < ARRAY_SIZE(lane_counts); i++) { - igt_dynamic_f("unigraf-dp-lane-count-%d", lane_counts[i]) { + int lane_count = lane_counts[i]; + + if (lane_count > max_natural_lanes) + continue; + + igt_dynamic_f("unigraf-dp-lane-count-%d", lane_count) { unigraf_reset(); - unigraf_set_max_lane_count(lane_counts[i]); + unigraf_set_max_lane_count(lane_count); unigraf_hpd_pulse(500000); igt_display_require_output(&display); @@ -118,7 +149,7 @@ int igt_main() init_output_and_display_pattern(&display, output); current_lanes = igt_dp_get_current_lane_count(drm_fd, output); - igt_assert_eq(current_lanes, lane_counts[i]); + igt_assert_eq(current_lanes, lane_count); } } } -- 2.55.0.691.gc56d675ccc-goog ^ permalink raw reply related [flat|nested] 3+ messages in thread
* ✓ i915.CI.BAT: success for tests/unigraf_lt: Optimize DP lane count validations 2026-08-13 17:59 [PATCH i-g-t] tests/unigraf_lt: Optimize DP lane count validations Mark Yacoub @ 2026-08-13 21:09 ` Patchwork 2026-08-13 21:26 ` ✓ Xe.CI.BAT: " Patchwork 1 sibling, 0 replies; 3+ messages in thread From: Patchwork @ 2026-08-13 21:09 UTC (permalink / raw) To: Mark Yacoub; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 2499 bytes --] == Series Details == Series: tests/unigraf_lt: Optimize DP lane count validations URL : https://patchwork.freedesktop.org/series/172170/ State : success == Summary == CI Bug Log - changes from IGT_9055 -> IGTPW_15679 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15679/index.html Participating hosts (37 -> 35) ------------------------------ Missing (2): bat-dg2-13 fi-snb-2520m Known issues ------------ Here are the changes found in IGTPW_15679 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live@active: - fi-bsw-nick: [PASS][1] -> [DMESG-FAIL][2] ([i915#14808]) +1 other test dmesg-fail [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_9055/fi-bsw-nick/igt@i915_selftest@live@active.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15679/fi-bsw-nick/igt@i915_selftest@live@active.html #### Possible fixes #### * igt@i915_selftest@live: - fi-tgl-1115g4: [DMESG-FAIL][3] ([i915#14808]) -> [PASS][4] +1 other test pass [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_9055/fi-tgl-1115g4/igt@i915_selftest@live.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15679/fi-tgl-1115g4/igt@i915_selftest@live.html * igt@kms_pm_rpm@basic-rte: - bat-rpls-4: [DMESG-WARN][5] ([i915#13400]) -> [PASS][6] [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_9055/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15679/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html [i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400 [i915#14808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14808 Build changes ------------- * CI: CI-20190529 -> None * IGT: IGT_9055 -> IGTPW_15679 * Linux: CI_DRM_18994 -> CI_DRM_18995 CI-20190529: 20190529 CI_DRM_18994: 12a74df2314c42325731297e95b9aafd9329a20d @ git://anongit.freedesktop.org/gfx-ci/linux CI_DRM_18995: 1f159dc3afe658eaaea3c77d3018705de6b1a31e @ git://anongit.freedesktop.org/gfx-ci/linux IGTPW_15679: 56f8823820addd586715839150cf22bc52e3488a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_9055: 8484e14a094150b500aeeb9bfb0db2ee0de862ea @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15679/index.html [-- Attachment #2: Type: text/html, Size: 3239 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* ✓ Xe.CI.BAT: success for tests/unigraf_lt: Optimize DP lane count validations 2026-08-13 17:59 [PATCH i-g-t] tests/unigraf_lt: Optimize DP lane count validations Mark Yacoub 2026-08-13 21:09 ` ✓ i915.CI.BAT: success for " Patchwork @ 2026-08-13 21:26 ` Patchwork 1 sibling, 0 replies; 3+ messages in thread From: Patchwork @ 2026-08-13 21:26 UTC (permalink / raw) To: Mark Yacoub; +Cc: igt-dev [-- Attachment #1: Type: text/plain, Size: 1162 bytes --] == Series Details == Series: tests/unigraf_lt: Optimize DP lane count validations URL : https://patchwork.freedesktop.org/series/172170/ State : success == Summary == CI Bug Log - changes from XEIGT_9055_BAT -> XEIGTPW_15679_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (12 -> 11) ------------------------------ Missing (1): bat-nvls-1 Changes ------- No changes found Build changes ------------- * IGT: IGT_9055 -> IGTPW_15679 * Linux: xe-5593-12a74df2314c42325731297e95b9aafd9329a20d -> xe-5594-1f159dc3afe658eaaea3c77d3018705de6b1a31e IGTPW_15679: 56f8823820addd586715839150cf22bc52e3488a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git IGT_9055: 8484e14a094150b500aeeb9bfb0db2ee0de862ea @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git xe-5593-12a74df2314c42325731297e95b9aafd9329a20d: 12a74df2314c42325731297e95b9aafd9329a20d xe-5594-1f159dc3afe658eaaea3c77d3018705de6b1a31e: 1f159dc3afe658eaaea3c77d3018705de6b1a31e == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_15679/index.html [-- Attachment #2: Type: text/html, Size: 1721 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-13 21:26 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-13 17:59 [PATCH i-g-t] tests/unigraf_lt: Optimize DP lane count validations Mark Yacoub 2026-08-13 21:09 ` ✓ i915.CI.BAT: success for " Patchwork 2026-08-13 21:26 ` ✓ Xe.CI.BAT: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox