[SRU][R][PATCH 0/1] Fix s0i3 blocked by dangling pipe from pre-OS firmware

ChunAn Wu an.wu at canonical.com
Tue Jul 21 05:38:58 UTC 2026


BugLink: https://bugs.launchpad.net/bugs/2161385

[Impact]
On AMD DCN platforms, if an external monitor is connected at power-on
and then unplugged before the display driver loads (for example, at the
GRUB menu), the system can no longer enter the s0i3 deepest suspend
state, even though all connectors report disconnected. This causes
noticeably worse suspend power draw and battery drain on affected
laptops.

The root cause is that the pre-OS firmware (GOP/vBIOS) lights up a
front-end for the display that is present at power-on. The driver never
fully tears this inherited pipe down, and the leftover dangling pipe
keeps the DCN block from reaching idle, which in turn blocks s0i3.

[Fix]
Backport the mailing-list proposal from Tom Chung
(https://lore.kernel.org/amd-gfx/20260709205936.5719-39-george.zhang@amd.com/)
which adds dc_disable_dangling_timing_generators() to DC core and
invokes it from amdgpu_dm right after dc_hardware_init(). The helper
scans every enabled timing generator, classifies each as in-use or
dangling, and powers down the HW blocks for the dangling pipes so DCN
can reach idle again.

The patch is not yet merged upstream, so it is carried as
UBUNTU: SAUCE while validation continues on the affected platform. It
will be dropped once the upstream version lands and is picked up via
the normal stable/next flow.

[Test Case]
1. Boot with an external monitor attached.
2. Unplug the external monitor at the GRUB menu (before the amdgpu
   driver loads).
3. Boot to the desktop with only the internal panel connected.
4. Suspend the system (systemctl suspend) and confirm via
   /sys/kernel/debug/amd_pmc/s0ix_stats (or the platform's equivalent)
   that s0i3 residency is reached, matching the behavior when no
   external monitor was ever attached.

[Regression Potential]
The change adds a boot-time teardown path in the AMD display driver
that only fires when a dangling pipe inherited from pre-OS firmware is
detected and nothing needs to be preserved. Risk is limited to AMD DCN
platforms and to the display init path; a bug here could show up as
missing initial display output or a splash-to-desktop transition
regression on affected AMD laptops. Mitigated by keeping the change as
SAUCE and by tracking the upstream review of the same patch.

Tom Chung (1):
  UBUNTU: SAUCE: drm/amd/display: Tear down dangling pipe on boot to fix
    s0i3

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |   8 ++
 drivers/gpu/drm/amd/display/dc/core/dc.c      | 109 ++++++++++++++++++
 drivers/gpu/drm/amd/display/dc/dc.h           |   2 +
 3 files changed, 119 insertions(+)

-- 
2.34.1




More information about the kernel-team mailing list