[PATCH 3/4] thunderbolt: improve usb3 adapter link up timeout value
Mika Westerberg
mika.westerberg at linux.intel.com
Fri Oct 30 01:50:45 PDT 2026
On Fri, Oct 30, 2026 at 04:25:38PM +0800, Chunfeng Yun wrote:
> when plug into a usb3 device into usb4 hub's DFP to trigger usb4
USB 3 device into USB4 hub's downstream facing port to ...
> driver wakeup, encounter usb3 link up timeout issue, then cause
> usb3 hub disconnect:
>
> usb4_hi NVDA8100:00: 0:1: failed to reach state TB_PORT_UP. Ignoring port...
> usb4_hi NVDA8100:00: 0:1: lost during suspend, disconnecting
> usb4_hi NVDA8100:00: 0:4 <-> 1:20 (USB3): deactivating
> usb4_hi NVDA8100:00: deactivating USB3 Down path from 0:4 to 1:20
> usb4_hi NVDA8100:00: deactivating USB3 Up path from 1:20 to 0:4
> ...
> thunderbolt 0-1: device disconnected
> usb 2-1: USB disconnect, device number 10
>
> Completes link training at ~1.48s and transitions to TB_PORT_UP after
> change the timeout to 2.5s:
>
> In the USB4 spec, Phase 5 (Link Equalization) alone is allowed up to
> 1000 ms. When add tPhase3 (100 ms), tPhase4 (100 ms), and retimer
> transaction delays (tCmdResponse = 50 ms), the physical link is
> allowed by spec to take 1200 ms to 1500 ms+ to complete initialization.
>
> here are two retimers in the link, if more retimers add it, need more
> time
>
> Signed-off-by: Chunfeng Yun <chunfeng.yun at mediatek.com>
> ---
> drivers/thunderbolt/switch.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c
> index d22d8db8f890..e7ee9639c54c 100644
> --- a/drivers/thunderbolt/switch.c
> +++ b/drivers/thunderbolt/switch.c
> @@ -500,8 +500,9 @@ int tb_port_state(struct tb_port *port)
> */
> int tb_wait_for_port(struct tb_port *port, bool wait_if_unplugged)
> {
> - int retries = 10;
> + int retries = 25;
> int state;
> +
This is unrelated change.
> if (!port->cap_phy) {
> tb_port_WARN(port, "does not have PHY\n");
> return -EINVAL;
> --
> 2.43.0
More information about the Linux-mediatek
mailing list