From: sashiko-bot@kernel.org
To: "Sven Peter" <sven@kernel.org>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 01/22] usb: typec: Add alternate mode state notifiers
Date: Sun, 06 Sep 2026 18:48:44 +0000 [thread overview]
Message-ID: <20260906184844.A5E631F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260906-b4-apple-soc-tbt-v2-1-1f80085f93fb@kernel.org>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Synchronous notifier execution inside deeply nested TCPM locks causes recursive and AB-BA deadlocks.
--
commit 24aff87629a22c99f4d8e24783e51c35bd321aa1
Author: Sven Peter <sven@kernel.org>
usb: typec: Add alternate mode state notifiers
This commit adds a blocking notifier chain to USB Type-C alternate modes,
triggering synchronously when an alternate mode is activated or deactivated.
It allows drivers (like Apple Silicon USB4/Thunderbolt) to react to cable
details and state changes.
> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c
> index 54c7810b563be..5808a3ef0d6cd 100644
> --- a/drivers/usb/typec/class.c
> +++ b/drivers/usb/typec/class.c
[ ... ]
> @@ -312,6 +315,10 @@ void typec_altmode_update_active(struct typec_altmode *adev, bool active)
> }
>
> adev->active = active;
> + blocking_notifier_call_chain(&alt->state_notifier,
> + active ? TYPEC_ALTMODE_ENTERED :
> + TYPEC_ALTMODE_EXITED,
> + adev);
[Severity: High]
Does this synchronous notifier chain execution risk recursive deadlocks or
AB-BA lock inversions with the TCPM driver?
Looking at drivers/usb/typec/tcpm/tcpm.c, tcpm_pd_svdm() calls
typec_altmode_update_active() while already holding port->lock:
tcpm_pd_svdm() {
mutex_lock(&port->lock);
...
typec_altmode_update_active(pdev, true);
}
Because blocking_notifier_call_chain() executes synchronously, any subscriber
callback will run with TCPM's port->lock held.
If a subscriber callback attempts to interact with the alternate mode
(for example, by calling typec_altmode_enter()), the TCPM altmode operations
such as tcpm_altmode_enter() will attempt to acquire port->lock again,
leading to a direct recursive deadlock.
Additionally, if subscribers acquire their own hardware locks in the callback,
it could create an AB-BA inversion against port->lock.
Could this notification be deferred (similar to the adev_action deferral
mechanism TCPM uses elsewhere) or executed outside of the port->lock context
to prevent these locking inversions?
> snprintf(dir, sizeof(dir), "mode%d", adev->mode);
> sysfs_notify(&adev->dev.kobj, dir, "active");
> sysfs_notify(&adev->dev.kobj, NULL, "active");
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260906-b4-apple-soc-tbt-v2-0-1f80085f93fb@kernel.org?part=1
next prev parent reply other threads:[~2026-09-06 18:48 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 [this message]
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
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=20260906184844.A5E631F00A3A@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 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.