From: sashiko-bot@kernel.org
To: "Sven Peter" <sven@kernel.org>
Cc: conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 15/22] thunderbolt: Add ring_configure to tb_nhi_ops
Date: Sun, 06 Sep 2026 18:53:55 +0000 [thread overview]
Message-ID: <20260906185356.321D91F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260906-b4-apple-soc-tbt-v2-15-1f80085f93fb@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Combining the ring enable and E2E flow control writes into a single register write overrides a documented 2-step hardware initialization sequence, risking breakage on standard Intel Thunderbolt controllers.
--
commit 418152855ed5299104cb0cb1980002eff8f62254
Author: Sven Peter <sven@kernel.org>
thunderbolt: Add ring_configure to tb_nhi_ops
The Apple NHI also uses a separate register range for the receive ring
PDF masks. Add an optional tb_nhi_ops hook for it which falls back to
the standard USB4 NHI method when it is not set.
For the standard method also just write E2E flow control at the same
time the rest of the configuration is written.
> diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c
> index 4ef86e7c02851..2d622b365c4f9 100644
> --- a/drivers/thunderbolt/nhi.c
> +++ b/drivers/thunderbolt/nhi.c
> @@ -244,6 +244,24 @@ static void ring_iowrite32options(struct tb_ring *ring, u32 value, u32 offset)
> iowrite32(value, nhi_ring_options_base(ring) + offset);
> }
>
> +static void ring_configure(struct tb_ring *ring, u32 flags, u32 e2e_flags)
> +{
> + if (ring->is_tx)
> + ring_iowrite32options(ring, 0, 4);
> + else
> + ring_iowrite32options(ring, ring->sof_mask << 16 | ring->eof_mask, 4);
> +
> + ring_iowrite32options(ring, flags | e2e_flags, 0);
> +}
[Severity: Medium]
Does combining the ring valid bit and E2E configuration into this single
write in ring_configure() cause a regression by overriding the required
hardware initialization sequence?
By writing flags and e2e_flags at the same time, this could cause standard
Intel controllers to silently ignore the E2E configuration if they expect
the valid bit to be set first. Any time an RX ring with RING_FLAG_E2E is
started via tb_ring_start() on a standard Intel controller, this path is
triggered.
[ ... ]
> @@ -722,30 +741,13 @@ void tb_ring_start(struct tb_ring *ring)
> flags = RING_FLAG_ENABLE | RING_FLAG_RAW;
> }
>
> - ring_iowrite64desc(ring, ring->descriptors_dma, 0);
> - if (ring->is_tx) {
> - ring_iowrite32desc(ring, ring->size, 12);
> - ring_iowrite32options(ring, 0, 4);
> - ring_iowrite32options(ring, flags, 0);
> - } else {
> - u32 sof_eof_mask = ring->sof_mask << 16 | ring->eof_mask;
> -
> - ring_iowrite32desc(ring, (frame_size << 16) | ring->size, 12);
> - ring_iowrite32options(ring, sof_eof_mask, 4);
> - ring_iowrite32options(ring, flags, 0);
> - }
> -
> - /*
> - * Now that the ring valid bit is set we can configure E2E if
> - * enabled for the ring.
> - */
[Severity: Medium]
Could replacing this explicit two-stage initialization sequence in
tb_ring_start() break E2E flow control on existing hardware?
The removed comment implies the hardware specifically requires the valid bit
to be set before it will accept E2E flow control configuration. If this is
done in a single step via nhi_ring_configure(), it might lead to RX ring
overflows and packet loss in subsystems that rely on it, such as Thunderbolt
networking.
> if (ring->flags & RING_FLAG_E2E) {
> if (!ring->is_tx) {
> u32 hop;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260906-b4-apple-soc-tbt-v2-0-1f80085f93fb@kernel.org?part=15
next prev parent reply other threads:[~2026-09-06 18:53 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-06 18:36 [PATCH v2 00/22] Initial USB4/Thunderbolt support for Apple M1/M2/M3 SoCs Sven Peter
2026-09-06 18:36 ` [PATCH v2 01/22] usb: typec: Add alternate mode state notifiers Sven Peter
2026-09-06 18:48 ` sashiko-bot
2026-09-07 13:27 ` Joshua Peisach
2026-09-08 12:00 ` Heikki Krogerus
2026-09-06 18:36 ` [PATCH v2 02/22] usb: typec: Represent USB4 on the Type-C bus Sven Peter
2026-09-06 18:52 ` sashiko-bot
2026-09-07 13:31 ` Joshua Peisach
2026-09-08 12:07 ` Heikki Krogerus
2026-09-06 18:36 ` [PATCH v2 03/22] usb: typec: tipd: Register a USB4 port mode for CD321x Sven Peter
2026-09-06 18:47 ` sashiko-bot
2026-09-06 18:36 ` [PATCH v2 04/22] usb: typec: tipd: Publish CD321x partner alternate modes Sven Peter
2026-09-06 18:54 ` sashiko-bot
2026-09-06 18:36 ` [PATCH v2 05/22] dt-bindings: thunderbolt: Add Apple USB4/Thunderbolt NHI Sven Peter
2026-09-06 18:36 ` [PATCH v2 06/22] dt-bindings: thunderbolt: Add Apple USB4/Thunderbolt ACIO block Sven Peter
2026-09-06 18:36 ` [PATCH v2 07/22] thunderbolt: Try reading host DROM from device tree first Sven Peter
2026-09-06 18:36 ` [PATCH v2 08/22] thunderbolt: Don't read the UID if we already know it Sven Peter
2026-09-06 19:07 ` sashiko-bot
2026-09-06 18:36 ` [PATCH v2 09/22] thunderbolt: Allocate ring HopID before requesting the ring interrupt Sven Peter
2026-09-06 18:36 ` [PATCH v2 10/22] thunderbolt: Unlock host router ports during startup Sven Peter
2026-09-06 19:03 ` sashiko-bot
2026-09-08 8:22 ` Mika Westerberg
2026-09-06 18:36 ` [PATCH v2 11/22] thunderbolt: Find Apple VSE capability " Sven Peter
2026-09-06 18:45 ` sashiko-bot
2026-09-07 13:38 ` Joshua Peisach
2026-09-08 20:24 ` Sven Peter
2026-09-06 18:36 ` [PATCH v2 12/22] thunderbolt: Add ring_interrupt_active to tb_nhi_ops Sven Peter
2026-09-06 18:36 ` [PATCH v2 13/22] thunderbolt: Add ring register accessors " Sven Peter
2026-09-08 8:32 ` Mika Westerberg
2026-09-06 18:36 ` [PATCH v2 14/22] thunderbolt: Add ring_interrupt_mask " Sven Peter
2026-09-06 18:36 ` [PATCH v2 15/22] thunderbolt: Add ring_configure " Sven Peter
2026-09-06 18:53 ` sashiko-bot [this message]
2026-09-06 18:36 ` [PATCH v2 16/22] thunderbolt: Add add_links " Sven Peter
2026-09-06 18:55 ` sashiko-bot
2026-09-08 8:35 ` Mika Westerberg
2026-09-06 18:36 ` [PATCH v2 17/22] thunderbolt: Add QUIRK_NO_USB3_BW_ALLOC Sven Peter
2026-09-06 18:36 ` [PATCH v2 18/22] thunderbolt: Export symbols required by the Apple Silicon driver Sven Peter
2026-09-06 18:36 ` [PATCH v2 19/22] thunderbolt: Add Apple Silicon support Sven Peter
2026-09-06 18:59 ` sashiko-bot
2026-09-08 9:18 ` Mika Westerberg
2026-09-08 19:02 ` Sven Peter
2026-09-08 19:04 ` Sven Peter
2026-09-09 6:06 ` Mika Westerberg
2026-09-09 15:20 ` Sven Peter
2026-09-09 15:25 ` Sven Peter
2026-09-10 4:52 ` Mika Westerberg
2026-09-10 4:50 ` Mika Westerberg
2026-09-06 18:36 ` [PATCH v2 20/22] arm64: dts: apple: t8103: Add USB4 ACIO and NHI Sven Peter
2026-09-06 18:36 ` [PATCH v2 21/22] arm64: dts: apple: t8112: " Sven Peter
2026-09-06 18:36 ` [PATCH v2 22/22] arm64: dts: apple: t60xx: " Sven Peter
2026-09-06 18:57 ` sashiko-bot
2026-09-07 13:52 ` [PATCH v2 00/22] Initial USB4/Thunderbolt support for Apple M1/M2/M3 SoCs Joshua Peisach
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=20260906185356.321D91F00A3A@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sven@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