From: Chunfeng Yun <chunfeng.yun@mediatek.com>
To: Mika Westerberg <westeri@kernel.org>
Cc: Andreas Noever <andreas.noever@gmail.com>,
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
Sven Peter <sven@kernel.org>,
Yehezkel Bernat <YehezkelShB@gmail.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
<linux-kernel@vger.kernel.org>, <linux-usb@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-mediatek@lists.infradead.org>,
Chunfeng Yun <chunfeng.yun@mediatek.com>
Subject: [PATCH v2 7/7] thunderbolt: prevent pcie tunnel activation/teardown warnings
Date: Tue, 10 Nov 2026 19:48:55 +0800 [thread overview]
Message-ID: <20261110114925.722014-8-chunfeng.yun@mediatek.com> (raw)
In-Reply-To: <20261110114925.722014-1-chunfeng.yun@mediatek.com>
When usb4 enter sleep mode, echo 1 to authorized of sysfile,
will wakeup usb4 driver, but fail to create pcie tunnel, cause
the warning due to a race condition between router disconnect
during resume and user authorization
[ 278.831186] usb4_hi NVDA8100:00: 0:1: is unplugged (state: 7), retrying...
[ 278.943031] usb4_hi NVDA8100:00: 0:1: failed to reach state TB_PORT_UP. Ignoring port...
[ 278.951125] usb4_hi NVDA8100:00: 0:1: lost during suspend, disconnecting
...
[ 279.013763] usb4_hi NVDA8100:00: 0:7 <-> 1:9 (PCI): activating
[ 279.019587] usb4_hi NVDA8100:00: activating PCIe Down path from 0:7 to 1:9
[ 279.026468] usb4_hi NVDA8100:00: 1:1: Writing hop 1
[ 279.031335] usb4_hi NVDA8100:00: 1:1: In HopID: 8 => Out port: 9 Out HopID: 8
[ 279.038546] usb4_hi NVDA8100:00: 1:1: Weight: 1 Priority: 3 Credits: 32 Drop: 0 PM: 0
[ 279.046536] usb4_hi NVDA8100:00: 1:1: Counter enabled: 0 Counter index: 2047
[ 279.053834] usb4_hi NVDA8100:00: 1:1: Flow Control (In/Eg): 1/0 Shared Buffer (In/Eg): 0/0
[ 279.062259] usb4_hi NVDA8100:00: 1:1: Unknown1: 0x0 Unknown2: 0x0 Unknown3: 0x0
[ 279.069730] ------------[ cut here ]------------
[ 279.074335] usb4_hi NVDA8100:00: PCIe Down path activation failed
[ 279.080426] WARNING: CPU: 5 PID: 2433 at drivers/thunderbolt/path.c:587 tb_path_activate+0x1a4/0x5b0
...
[ 279.220285] Call trace:
[ 279.222722] tb_path_activate+0x1a4/0x5b0 (P)
[ 279.227068] tb_tunnel_activate+0x140/0x498
[ 279.231241] tb_tunnel_pci+0x180/0x490
[ 279.234980] tb_domain_approve_switch+0x74/0xb0
[ 279.239500] authorized_store+0x214/0x270
[ 279.243498] dev_attr_store+0x20/0x70
...
[ 279.288888] ---[ end trace 0000000000000000 ]---
[ 279.293497] usb4_hi NVDA8100:00: 0:7 <-> 1:9 (PCI): activation failed
When usb4 enter sleep mode, echo 0 to authorized of sysfile,
will wakeup usb4 driver, but fail to disconnect pcie due to
the PCIe tunnel had already been torn down and freed if the port
is fail to resume,
[ 545.887822] usb4_hi NVDA8100:00: 0:1: is unplugged (state: 7), retrying...
[ 545.998689] usb4_hi NVDA8100:00: 0:1: failed to reach state TB_PORT_UP. Ignoring port...
[ 546.006778] usb4_hi NVDA8100:00: 0:1: lost during suspend, disconnecting
[ 546.013474] usb4_hi NVDA8100:00: 0:4 <-> 1:16 (USB3): deactivating
[ 546.020449] usb4_hi NVDA8100:00: deactivating USB3 Down path from 0:4 to 1:16
[ 546.027959] usb4_hi NVDA8100:00: deactivating USB3 Up path from 1:16 to 0:4
[ 546.035649] usb4_hi NVDA8100:00: 0:7 <-> 1:9 (PCI): deactivating
[ 546.042463] usb4_hi NVDA8100:00: deactivating PCIe Down path from 0:7 to 1:9
[ 546.050320] usb4_hi NVDA8100:00: deactivating PCIe Up path from 1:9 to 0:7
[ 546.057790] usb4_hi NVDA8100:00: 0: TMU: mode change off -> bi-directional, HiFi requested
[ 546.067910] usb4_hi NVDA8100:00: 0: TMU: mode set to: bi-directional, HiFi
[ 546.076120] usb4_hi NVDA8100:00: 0:1: total credits changed 66 -> 66
[ 546.082844] usb4_hi NVDA8100:00: 1: link width set to symmetric, dual lanes
[ 546.089815] ------------[ cut here ]------------
[ 546.094420] WARNING: CPU: 7 PID: 2433 at drivers/thunderbolt/tb.c:2245 tb_disconnect_pci+0x108/0x120
...
[ 546.238810] Call trace:
[ 546.241246] tb_disconnect_pci+0x108/0x120 (P)
[ 546.245680] tb_domain_disapprove_switch+0x24/0x60
[ 546.250464] disapprove_switch+0xbc/0xe8
[ 546.254378] authorized_store+0x19c/0x270
[ 546.258378] dev_attr_store+0x20/0x70
...
[ 546.303767] ---[ end trace 0000000000000000 ]---
The check prevents a redundant lookup and eliminates the warning
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
v2: no changes
---
drivers/thunderbolt/switch.c | 5 +++++
drivers/thunderbolt/tb.c | 7 +++++++
2 files changed, 12 insertions(+)
diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c
index e12546bfb869..6e9f439ebf3f 100644
--- a/drivers/thunderbolt/switch.c
+++ b/drivers/thunderbolt/switch.c
@@ -1850,6 +1850,11 @@ static int tb_switch_set_authorized(struct tb_switch *sw, unsigned int val)
if (!!sw->authorized == !!val)
goto unlock;
+ if (sw->is_unplugged) {
+ ret = -ENODEV;
+ goto unlock;
+ }
+
switch (val) {
/* Disapprove switch */
case 0:
diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c
index 57c11ba13459..69310622d786 100644
--- a/drivers/thunderbolt/tb.c
+++ b/drivers/thunderbolt/tb.c
@@ -2266,6 +2266,10 @@ static int tb_disconnect_pci(struct tb *tb, struct tb_switch *sw)
struct tb_tunnel *tunnel;
struct tb_port *up;
+ /* If the switch has already been unplugged, tunnels are already freed */
+ if (sw->is_unplugged)
+ return 0;
+
up = tb_switch_find_port(sw, TB_TYPE_PCIE_UP);
if (WARN_ON(!up))
return -ENODEV;
@@ -2288,6 +2292,9 @@ static int tb_tunnel_pci(struct tb *tb, struct tb_switch *sw)
struct tb_cm *tcm = tb_priv(tb);
struct tb_tunnel *tunnel;
+ if (sw->is_unplugged)
+ return -ENODEV;
+
up = tb_switch_find_port(sw, TB_TYPE_PCIE_UP);
if (!up)
return 0;
--
2.45.2
next prev parent reply other threads:[~2026-11-10 11:49 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 11:48 [PATCH 0/7] thunderbolt: Add support platform NHI driver Chunfeng Yun
2026-11-10 11:48 ` [PATCH v2 1/7] thunderbolt: Prefix NHI core functions with tb_ and tb_ring_ Chunfeng Yun
2026-11-10 12:42 ` Konrad Dybcio
2026-11-10 11:48 ` [PATCH v2 2/7] thunderbolt: Move ICM mailbox functions to icm.c and internalize interrupt work Chunfeng Yun
2026-11-10 14:24 ` Mika Westerberg
2026-11-10 11:48 ` [PATCH v2 3/7] thunderbolt: Make PCIe NHI support opt-in Chunfeng Yun
2026-11-10 11:48 ` [PATCH v2 4/7] thunderbolt: add platform NHI driver Chunfeng Yun
2026-11-10 12:43 ` Konrad Dybcio
2026-11-10 14:37 ` Mika Westerberg
2026-11-10 11:48 ` [PATCH v2 5/7] thunderbolt: increase the lane adapter link-up timeout value Chunfeng Yun
2026-11-10 14:39 ` Mika Westerberg
2026-11-10 11:48 ` [PATCH v2 6/7] thunderbolt: decouple the waiting time of TB_PORT_UNPLUGGED and TB_PORT_UP Chunfeng Yun
2026-11-10 14:40 ` Mika Westerberg
2026-11-10 11:48 ` Chunfeng Yun [this message]
2026-11-10 14:50 ` [PATCH v2 7/7] thunderbolt: prevent pcie tunnel activation/teardown warnings Mika Westerberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261110114925.722014-8-chunfeng.yun@mediatek.com \
--to=chunfeng.yun@mediatek.com \
--cc=YehezkelShB@gmail.com \
--cc=andreas.noever@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=gregkh@linuxfoundation.org \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=sven@kernel.org \
--cc=westeri@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®