Follow-up to my Meteor Lake-P comments above, with a negative result that 
should help scope
the SRU: backporting drm/i915/cx0: Clear response ready & error bit (Bspec 
65101) onto the
current Ubuntu HWE kernel does not fix the resume stall. Mainline 7.1.x does.

Same machine and cmdline as my earlier comment (ThinkPad P1 Gen 7, 8086:7d55, 
eDP-1
2560x1600 HBR3, port_clock 810000, use_c10: yes, s2idle only).

Build A — 7.0.0-30 + the Bspec 65101 backport

Built from linux-hwe-7.0 7.0.0-30.30~24.04.1 source with that one commit applied
(the two intel_clear_response_ready_flag() calls added ahead of the M2P msgbus 
writes in
the read and write paths). The patch is genuinely in the shipped binary: the 
built
intel_cx0_phy.o has 5 relocations against intel_clear_response_ready_flag 
versus 3 in
the stock 7.0.0-30 build. So this is not a build miss.

Result after a 9 h 11 min s2idle dwell — failure is unchanged, same signature, 
same
duration:

    PM: suspend entry (s2idle)          02:48:07
    Failed to bring PHY A to idle.      11:58:43
    PHY A Read 0c70 failed after 3 retries.
    PHY A Write 0c70 failed after 3 retries.
    [CRTC:150:pipe A] flip_done timed out            11:58:55
    [CRTC:150:pipe A] mismatch in port_clock (expected 810000, found 61440)
    flip_done timed out                              11:59:06
    flip_done timed out                              11:59:16
    flip_done timed out                              11:59:26
    PHY A failed to change powerdown state           11:59:28
    PM: suspend exit                                 11:59:29

46 s from first PHY error to suspend exit. Also one WARN at
drm_crtc_wait_one_vblank+0x18c reached via
intel_encoder_link_check_work_fn -> intel_ddi_link_check -> intel_dp_link_check 
->
intel_modeset_commit_pipes -> intel_atomic_commit.

Build B — mainline v7.1.12

Stock kernel.ubuntu.com mainline build, no patches, same cmdline.

Result after a 47 min 56 s s2idle dwell:

    PM: suspend entry (s2idle)     06:37:39
    Restarting tasks: Starting     07:25:35
    Restarting tasks: Done         07:25:35
    PM: suspend exit               07:25:35

Zero occurrences of flip_done timed out, Failed to bring PHY, 0c70 failed,
port_clock mismatch or powerdown state across the whole boot. Resume is 
subjectively
instant on keypress.

Second signal: the box also fails to *hold* the low-power state on 7.0

Comparing /sys/power/suspend_stats/last_hw_sleep against wall-clock
dwell:

- 7.0.0-30 + backport: 2929578342 us (48.8 min) of hardware sleep across a 9 h 
11 min
  suspend — under 9% residency.
- mainline 7.1.12: 2861759490 us (47.7 min) across a 47 min 56 s suspend — 
99.6%.

So on 7.0 this is not purely a resume-path bug; the platform is not
staying down either.

Where the fix is *not*

Worth recording so nobody else burns a build on it: diffing
drivers/gpu/drm/i915/display/intel_cx0_phy.c between Ubuntu 7.0.0-30 and 
mainline v7.1.12,
the C10 message-bus path differs only by a rename —
intel_clear_response_ready_flag() -> intel_cx0_clear_response_ready_flag() — 
with the
same four call sites in the same positions. Build A above is therefore already
byte-equivalent to 7.1 in that function, and it still fails. Everything else 
that changed in
that file is the PLL-table refactor that drops the .clock member in favour of
intel_c10pll_calc_port_clock() / intel_dpll_clock_matches(), which looks 
unrelated (the
found 61440 in the mismatch is a readback off an unprogrammed PLL, i.e. a 
symptom).

That points at the callers — DDI / display-power-well / DC-state sequencing — 
rather
than at intel_cx0_phy.c itself. I have not bisected 7.0 -> 7.1 to name the 
commits; if
someone on the kernel team can narrow it, I have the hardware and am happy to 
test
candidate patches.

Caveats

- Build B ran without the nvidia DKMS module: mainline 7.1.12 is built with GCC 
14 and
  passes -fmin-function-alignment=16, which the gcc-13 on 24.04 rejects, so 
nvidia
  580.173.02 would not build against it. Build A had nvidia loaded. Per my 
earlier comment
  the stall is not nvidia-dependent, but noting the difference for completeness.
- Test dwell matters: this bug does not reproduce on short naps. Anything under 
~45 min is
  not a valid negative. last_hw_sleep is the way to prove the dwell actually 
happened.

Ask

The 65101 commit is in the 7.1 tree but is not the whole fix, so an SRU that 
picks only it
into 7.0 will not resolve this bug. Whatever else 7.1 carries in the CX0/DDI 
resume path
needs to come with it.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2150605

Title:
  `i915 Arrow Lake-S: PHY A / C10 DPLL state mismatch on resume from
  long s2idle dwell — slow wake (5-10s) with retry storm`

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2150605/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to