[PATCH RFC] thunderbolt: Re-add DP resources on resume

From: Jiayi Li
Date: Wed Sep 17 2025 - 04:25:59 EST


During suspend, DP resources are released through tb_disconnect_and_release_dp()
but were not being re-added during resume, preventing DP tunnels from being
re-established.

This caused DP displays connected via Thunderbolt docks (such as Targus docks)
to not display after S3 resume. The issue was visible in logs:

[246.397437] tb_cfg_ack_plug:819: thunderbolt 0000:2c:00.0: acking hot plug event on 3:10
[246.398282] tb_dp_resource_available:2019: thunderbolt 0000:2c:00.0: 3:10: DP OUT resource available
[246.398291] tb_tunnel_dp:1875: thunderbolt 0000:2c:00.0: looking for DP IN <-> DP OUT pairs:
[246.398294] tb_tunnel_dp:1899: thunderbolt 0000:2c:00.0: no suitable DP IN adapter available, not tunneling

Add call to tb_add_dp_resources() in tb_resume_noirq() to ensure DP resources
are properly re-added during resume, allowing DP tunnels to be re-established.

Signed-off-by: Jiayi Li <lijiayi@xxxxxxxxxx>
---
drivers/thunderbolt/tb.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c
index c14ab1fbeeaf..cb652df3fc9f 100644
--- a/drivers/thunderbolt/tb.c
+++ b/drivers/thunderbolt/tb.c
@@ -3119,6 +3119,7 @@ static int tb_resume_noirq(struct tb *tb)
tb_switch_reset(tb->root_switch);

tb_switch_resume(tb->root_switch, false);
+ tb_add_dp_resources(tb->root_switch);
tb_free_invalid_tunnels(tb);
tb_free_unplugged_children(tb->root_switch);
tb_restore_children(tb->root_switch);
--
2.47.1