Re: [BUG] i915/ADL-P eDP: link training exits with adj_req=0x11 unresolved, causing modeset loop on CMN14E7 (Dell Latitude 5430)

Jani Nikula <[email protected]>
Newsgroups org.freedesktop.lists.intel-gfx
Organization Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs Bertel Jungin Aukio 5, 02600 Espoo, Finland
Message-ID <[email protected]>
On Sun, 16 Aug 2026, Novej Panjawani <[email protected]> wrote:
> ## Summary
>
> After boot and after any display mode change (HDMI connect/disconnect), 
> the internal eDP display on this Dell Latitude 5430 (ADL-P, Intel Iris 
> Xe 46A8) enters an **infinite modeset loop** that repeats every ~2 
> seconds: backlight off → pipe disabled → link retrain → pipe enabled → 
> backlight on → repeat. This produces continuous visible black-screen 
> flashing. The loop self-resolves after ~5–15 minutes (thermal 
> stabilization of the eDP connection), and is immediately re-triggered by 
> any subsequent mode change.

Please file a bug as described at [1].

BR,
Jani.


[1] https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html


>
> External HDMI display is not affected.
>
> ## Hardware / Environment
>
> | | |
> |---|---|
> | **System** | Dell Latitude 5430 |
> | **GPU** | Intel Alder Lake-P, Iris Xe Graphics — PCI `0000:00:02.0`, 
> Device ID `0x46A8` |
> | **Panel** | Chimei Innolux CMN14E7 — 14" 1920×1080, eDP 1.4, EDID 1.4 |
> | **Kernel** | `6.18.40-1-cachyos-lts` (clang 22.1.8, LLD 22.1.8) |
> | **i915** | 1.6.0 — GuC 70.49.4, DMC adlp_dmc.bin v2.20, HuC 7.9.3 |
> | **BIOS** | Dell 1.36.0 (2025-12-23) — latest per fwupd |
>
> ## Root Cause
>
> With `drm.debug=0x04`, the following loop is captured every ~2 seconds:
>
> 1. `intel_dp_start_link_train` uses **vswing 0/0/0/0, pre-emph 0/0/0/0** 
> at `LINK_BW_SET=0x0a` (HBR / 2.7 Gbps), 2 lanes
> 2. TPS1 and TPS2 complete — `"Channel EQ done. DP Training successful"`
> 3. Pipe A and backlight are enabled (PWM = 23718)
> 4. ~2 seconds later, link status check:
>     - Read 1: `align:0x80 sink:0x3 adj_req0_1:0x11` — aligned, but panel 
> requesting vswing level 1
>     - Read 2: `align:0x0 sink:0x1 adj_req0_1:0x11` — **alignment lost, 
> symbol lock lost**
> 5. Driver detects link loss → full modeset (backlight off, pipe disabled)
> 6. Repeat from step 1
>
> **`adj_req0_1=0x11` (vswing level 1 requested for lanes 0/1) appears in 
> every DPCD read throughout the flicker window.** The driver exits 
> training while adj_req is non-zero and does not apply the requested 
> levels to the operational link. The panel cannot sustain HBR at level 0, 
> degrades within ~2 seconds, fires IRQ_HPD, the driver responds with a 
> full modeset, and the cycle repeats.
>
> ## Debug Log (one complete cycle)
>
> Captured with `drm.debug=0x04`:
>
> ```
> i915: [drm:intel_dp_start_link_train] Using LINK_BW_SET value 0a
> i915: [drm:intel_dp_set_signal_levels] 8b/10b, lanes: 2, vswing levels: 
> 0/0/0/0, pre-emphasis levels: 0/0/0/0
> i915: [drm:intel_dp_link_train_phy] Clock recovery OK
> i915: [drm:intel_dp_link_train_phy] Channel EQ done. DP Training successful
> i915: [drm:intel_dp_link_train_phy] Link Training passed at link rate = 
> 270000, lane count = 2
> i915: enabling pipe A
> i915: [drm:cnp_enable_backlight] set backlight PWM = 23718
>
> -- ~2 seconds --
>
> i915: [drm:intel_dp_dump_link_status] ln0_1:0x73 align:0x80 sink:0x3 
> adj_req0_1:0x11   <-- link ok, but adj_req non-zero
> i915: [drm:intel_dp_dump_link_status] ln0_1:0x73 align:0x0 sink:0x1 
> adj_req0_1:0x11   <-- link lost
>
> i915: [drm:cnp_disable_backlight] set backlight PWM = 0
> i915: [drm:intel_disable_transcoder] disabling pipe A
> i915: [drm:intel_hpd_irq_handler] Received HPD interrupt on PIN 4 - cnt: 10
> i915: [drm:intel_dp_hpd_pulse] ignoring long hpd on eDP [ENCODER:262:DDI 
> A/PHY A]
>
> -- repeat every ~2 seconds --
> ```
>
> ## Reproduction
>
> 1. Append `drm.debug=0x04` to kernel cmdline, reboot
> 2. `journalctl -k -f | grep -E 
> "link_train|dump_link|hpd|backlight|transcoder"`
> 3. Cycle appears within seconds of display init, repeats every ~2 seconds
> 4. After 5–15 min, cycle stops (thermal stabilization)
> 5. Retrigger: unplug external display → cycle immediately resumes
>
> ## Expected Behaviour
>
> Either:
> - **(a)** The TPS2 loop should continue iterating and updating 
> vswing/pre-emph until `adj_req` is zero before declaring training 
> successful; or
> - **(b)** After training exits, the driver should apply the final 
> `adj_req` vswing values to the DDI buffer translation used for normal 
> operation
>
> ## Attempted Workarounds (all ineffective)
>
> None of the following affect link training vswing behavior:
> - `i915.enable_psr=0`, `i915.enable_panel_replay=0`
> - `i915.enable_dc=0`, `i915.enable_sagv=0`, `i915.enable_fbc=0`, 
> `i915.enable_dsb=0`
> - `i915.edp_vswing=2` — selects 400 mV DDI translation table but does 
> not force vswing level 1 in the training loop
> - `i915.enable_rc6=0` — silently ignored ("unknown parameter"); GuC RC 
> remains active
> - `xe.force_probe=46a8` — xe exhibits a separate fatal bug: continuous 
> GTT plane faults in stolen framebuffer memory (~300K–600K suppressed 
> callbacks per 5 seconds)
>
> ## Notes
>
> - Issue self-resolves after thermal warmup, strongly suggesting the 
> physical link is borderline at HBR/level-0 — applying level 1 should 
> resolve it permanently
> - BIOS 1.36.0 is the latest (confirmed via fwupd)
> - External HDMI (pipe B) is unaffected throughout
>

-- 
Jani Nikula, Intel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.