]> git.hungrycats.org Git - linux/commit
drm/amd/display: Tear down dangling pipe on boot to fix s0i3
authorTom Chung <chiahsuan.chung@amd.com>
Tue, 23 Jun 2026 07:35:30 +0000 (15:35 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 15 Jul 2026 13:15:38 +0000 (09:15 -0400)
commit98e08a815ef604837c4c7d7991ba8772107332da
treeff0e96bd97bc8e0444d237d7a8e017780f09d7ac
parent11a90eaf5c808ba800249dda0d481c35d0888589
drm/amd/display: Tear down dangling pipe on boot to fix s0i3

[Why]
If an external monitor is connected at power-on and then unplugged
before the driver loads (e.g. at the GRUB menu), the system can no
longer enter the s0i3 deepest suspend state, even though all connectors
report disconnected.

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 pipe keeps the DCN block from reaching idle,
which blocks s0i3.

[How]
Add dc_disable_dangling_timing_generators() to DC core and call it from
amdgpu_dm right after dc_hardware_init(). It scans every enabled timing
generator and classifies it as in-use or dangling. If a dangling pipe
exists and nothing needs to be preserved, power down the hw blocks so
DCN can reach idle.

Assisted-by: Cursor:claude-opus-4.8
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: George Zhang <george.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/dc/core/dc.c
drivers/gpu/drm/amd/display/dc/dc.h