From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Chunfeng Yun <chunfeng.yun@mediatek.com>
Cc: Mika Westerberg <westeri@kernel.org>,
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
Subject: Re: [PATCH v2 7/7] thunderbolt: prevent pcie tunnel activation/teardown warnings
Date: Tue, 10 Nov 2026 15:50:04 +0100 [thread overview]
Message-ID: <20261110145004.GF259790@black.igk.intel.com> (raw)
In-Reply-To: <20261110114925.722014-8-chunfeng.yun@mediatek.com>
On Tue, Nov 10, 2026 at 07:48:55PM +0800, Chunfeng Yun wrote:
> 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
This is hard to understand.
Also PCIe, USB4 and so on.
>
> [ 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,
Please put the steps like:
1) Boot the system, nothing connected.
2) Once booted up, connected device.
3) Authorize PCIe tunnel via echo 1 > ..
...
So that we can see what are the steps you reproduce this. The above is
really hard to follow at least to me.
>
> [ 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 */
router
everywhere
> + if (sw->is_unplugged)
> + return 0;
> +
Actually I'm thinking that we can just get rid of the WARN_ON()s instead.
If the router is gone we cannot find the upstream port nor the tunnel and
that's fine so just return error instead.
> 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
prev parent reply other threads:[~2026-11-10 14:50 UTC|newest]
Thread overview: 29+ 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 11:53 ` sashiko-bot
2026-11-10 12:42 ` Konrad Dybcio
2026-11-11 2:26 ` Chunfeng Yun (云春峰)
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 12:02 ` sashiko-bot
2026-11-10 14:24 ` Mika Westerberg
2026-11-11 2:37 ` Chunfeng Yun (云春峰)
2026-11-10 11:48 ` [PATCH v2 3/7] thunderbolt: Make PCIe NHI support opt-in Chunfeng Yun
2026-11-10 12:09 ` sashiko-bot
2026-11-11 12:17 ` Chunfeng Yun (云春峰)
2026-11-10 11:48 ` [PATCH v2 4/7] thunderbolt: add platform NHI driver Chunfeng Yun
2026-11-10 12:15 ` sashiko-bot
2026-11-10 12:43 ` Konrad Dybcio
2026-11-11 13:29 ` Chunfeng Yun (云春峰)
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 11:55 ` sashiko-bot
2026-11-12 7:27 ` Chunfeng Yun (云春峰)
2026-11-10 14:39 ` Mika Westerberg
2026-11-12 7:24 ` Chunfeng Yun (云春峰)
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 11:55 ` sashiko-bot
2026-11-10 14:40 ` Mika Westerberg
2026-11-12 8:00 ` Chunfeng Yun (云春峰)
2026-11-10 11:48 ` [PATCH v2 7/7] thunderbolt: prevent pcie tunnel activation/teardown warnings Chunfeng Yun
2026-11-10 12:01 ` sashiko-bot
2026-11-10 14:50 ` Mika Westerberg [this message]
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=20261110145004.GF259790@black.igk.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=YehezkelShB@gmail.com \
--cc=andreas.noever@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=chunfeng.yun@mediatek.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.