From: Kunal Joshi <kunal1.joshi@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Kunal Joshi <kunal1.joshi@intel.com>
Subject: [PATCH i-g-t 00/13] Expand kms_dp_link_training coverage
Date: Wed, 16 Sep 2026 10:17:48 +0530 [thread overview]
Message-ID: <20260916044801.1279102-1-kunal1.joshi@intel.com> (raw)
kms_dp_link_training forces the maximum link config, reads the link rate
back from debugfs, and asserts the two match. Both values are
intel_dp->link_rate, i.e. what the driver asked the sink for, not what
the link ended up running at, so a link that failed training and fell
back still passes. The FIXME in the test has been saying this for a
while. Nothing below the maximum is trained at all, which is precisely
the range every fallback and every bandwidth constrained modeset uses.
The series turns this into a sweep over the link configuration space:
- lib helpers for the debugfs the test needs (allowed link configs,
forced rate/lane, retrain state, Type-C port mode), plus generic DPCD
read and link status helpers in lib/igt_dp covering both 8b/10b and
128b/132b.
- Enumerate the configs in intel_dp_allowed_link_configs, i.e. the
intersection the driver really picks from, force each in turn as a
dynamic subtest, and verify from both ends: no link recovery in
progress, retraining not disabled, and the sink reporting CR, EQ and
symbol lock on every active lane.
- Configs that cannot carry the modes are skipped rather than failed,
using the aggregate data rate of all streams the commit enables.
Deriving the floor from the driver's unforced choice does not work
for MST, where it always configures max link bw.
- Outputs are grouped into links, so an MST topology is trained once as
a unit, and every output is covered instead of the first one. Per
connector mode subtests drive the smallest mode the sink offers,
which keeps the most configs reachable.
- Separate subtests for tbt-alt and direct links. That is where the
link clock comes from, and today a lab with no dock and a lab with a
broken tunnel look identical. The connector mode has to be in the
static subtest name, since a dynamic subtest that skips is not
counted as executed and the no-dock lab would report green.
The old four subtests keep their names and their PHY agnostic scope.
Everything new is guarded by igt_require() on the debugfs it needs, and
the sink side checks skip when the DP AUX chardev is not built in.
Kunal Joshi (13):
lib/i915/i915_dp: Add helpers for the allowed link configs debugfs
tests/intel/kms_dp_link_training: Use the UHBR helpers from lib
tests/intel/kms_dp_link_training: Extract train_link_config()
tests/intel/kms_dp_link_training: Check the config survived training
tests/intel/kms_dp_link_training: Drive the smallest mode the sink
offers
tests/intel/kms_dp_link_training: Train every allowed link config
lib/i915/i915_dp: Add a Type-C port mode query
tests/intel/kms_dp_link_training: Log the DP link inventory in the
fixture
tests/intel/kms_dp_link_training: Group the outputs into links
tests/intel/kms_dp_link_training: Add per connector mode subtests
lib/igt_dp: Add DPCD read helpers
lib/igt_dp: Add link status predicates for both channel codings
tests/intel/kms_dp_link_training: Verify the trained link from the
sink side
lib/i915/i915_dp.c | 192 ++++++++
lib/i915/i915_dp.h | 41 ++
lib/igt_dp.c | 211 ++++++++
lib/igt_dp.h | 13 +
tests/intel/kms_dp_link_training.c | 767 +++++++++++++++++++++++++----
5 files changed, 1123 insertions(+), 101 deletions(-)
--
2.25.1
next reply other threads:[~2026-09-16 4:27 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 4:47 Kunal Joshi [this message]
2026-09-16 4:47 ` [PATCH i-g-t 01/13] lib/i915/i915_dp: Add helpers for the allowed link configs debugfs Kunal Joshi
2026-09-21 8:37 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 02/13] tests/intel/kms_dp_link_training: Use the UHBR helpers from lib Kunal Joshi
2026-09-21 8:38 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 03/13] tests/intel/kms_dp_link_training: Extract train_link_config() Kunal Joshi
2026-09-22 11:51 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 04/13] tests/intel/kms_dp_link_training: Check the config survived training Kunal Joshi
2026-09-22 5:25 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 05/13] tests/intel/kms_dp_link_training: Drive the smallest mode the sink offers Kunal Joshi
2026-09-22 11:59 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 06/13] tests/intel/kms_dp_link_training: Train every allowed link config Kunal Joshi
2026-09-22 13:51 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 07/13] lib/i915/i915_dp: Add a Type-C port mode query Kunal Joshi
2026-09-22 14:55 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 08/13] tests/intel/kms_dp_link_training: Log the DP link inventory in the fixture Kunal Joshi
2026-09-23 12:46 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 09/13] tests/intel/kms_dp_link_training: Group the outputs into links Kunal Joshi
2026-09-23 13:10 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 10/13] tests/intel/kms_dp_link_training: Add per connector mode subtests Kunal Joshi
2026-09-23 13:29 ` S, Sowmiya
2026-09-16 4:47 ` [PATCH i-g-t 11/13] lib/igt_dp: Add DPCD read helpers Kunal Joshi
2026-09-23 13:34 ` S, Sowmiya
2026-09-16 4:48 ` [PATCH i-g-t 12/13] lib/igt_dp: Add link status predicates for both channel codings Kunal Joshi
2026-09-23 13:55 ` S, Sowmiya
2026-09-16 4:48 ` [PATCH i-g-t 13/13] tests/intel/kms_dp_link_training: Verify the trained link from the sink side Kunal Joshi
2026-09-23 14:00 ` S, Sowmiya
2026-09-16 5:08 ` ✓ Xe.CI.BAT: success for Expand kms_dp_link_training coverage Patchwork
2026-09-16 5:25 ` ✓ i915.CI.BAT: " Patchwork
2026-09-16 6:15 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-09-16 11:59 ` ✗ i915.CI.Full: " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2026-10-01 7:36 [PATCH i-g-t 00/13] " Kunal Joshi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260916044801.1279102-1-kunal1.joshi@intel.com \
--to=kunal1.joshi@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.