All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Chen-Yu Tsai" <wenst@chromium.org>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v8 10/16] usb: hub: Power on connected M.2 E-key connectors with power sequencing API
Date: Fri, 04 Sep 2026 09:10:19 +0000	[thread overview]
Message-ID: <20260904091020.4DE4F1F00A3D@smtp.kernel.org> (raw)
In-Reply-To: <20260904084158.1341550-11-wenst@chromium.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] hub_is_port_power_switchable() evaluates a per-port property at the hub level, leading to brittle logic and unintended side-effects for ports without power sequencers.
--

commit 839f0d077bce3f935502df5060567449e3c570bf
Author: Chen-Yu Tsai <wenst@chromium.org>

    usb: hub: Power on connected M.2 E-key connectors with power sequencing API
    
    The new M.2 E-key connector can have a USB connection. For the USB device
    on this connector to work, its power must be enabled and the W_DISABLE2#
    signal deasserted. The connector driver handles this and provides a
    toggle over the power sequencing API.

    Link: https://lore.kernel.org/all/20260610084053.2059858-1-wenst@chromium.org/
    Link: https://lore.kernel.org/all/20260515090149.3169406-1-wenst@chromium.org/

> diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
> index de524c6da9fc4..3f403a56e5f75 100644
> --- a/drivers/usb/core/hub.h
> +++ b/drivers/usb/core/hub.h
> @@ -103,7 +103,15 @@ static inline bool hub_is_port_power_switchable(struct usb_hub *hub)
>  	if (!hub)
>  		return false;
>  	hcs = hub->descriptor->wHubCharacteristics;
> -	return (le16_to_cpu(hcs) & HUB_CHAR_LPSM) < HUB_CHAR_NO_LPSM;
> +	if ((le16_to_cpu(hcs) & HUB_CHAR_LPSM) < HUB_CHAR_NO_LPSM)
> +		return true;
> +	/* check for controllable external power sequencers */
> +	for (unsigned int i = 0; i < hub->hdev->maxchild; i++) {
> +		if (hub->ports[i] && hub->ports[i]->pwrseq)
> +			return true;
> +	}
> +
> +	return false;
>  }

[Severity: Medium]
Does this loop incorrectly promote a per-port capability to a hub-wide
capability?

If any port on a hub has a pwrseq, hub_is_port_power_switchable() returns
true for the entire hub. Could this cause callers to erroneously try to apply
power switching logic to all ports on the hub, even those without a pwrseq,
just because a sibling port made the hub appear switchable?

For example, in drivers/usb/core/hub.c:hub_port_connect():

	if (hub_is_port_power_switchable(hub)
			&& !usb_port_is_power_on(port_dev, portstatus)
			&& !port_dev->port_owner)
		usb_hub_set_port_power(hdev, hub, port1, true);

Additionally, since hdev->maxchild is 0 during port creation, the loop
inside hub_is_port_power_switchable() does not execute at that time. Does
this make the hub-wide check redundant for its intended purpose in
usb_port_allow_power_off()?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260904084158.1341550-1-wenst@chromium.org?part=10

  reply	other threads:[~2026-09-04  9:10 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-04  8:41 [PATCH v8 00/16] arm64: mediatek: Add M.2 E-key slot on Chromebooks Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 01/16] device property: Add fwnode_graph_get_port_by_id() Chen-Yu Tsai
2026-09-04  8:54   ` sashiko-bot
2026-09-04 20:18   ` Sakari Ailus
2026-09-04  8:41 ` [PATCH v8 02/16] device property: Add fwnode_graph_get_next_port_endpoint() Chen-Yu Tsai
2026-09-04 20:22   ` Sakari Ailus
2026-09-04  8:41 ` [PATCH v8 03/16] power: sequencing: Add pwrseq_get_state() Chen-Yu Tsai
2026-09-04  8:57   ` sashiko-bot
2026-09-04  8:41 ` [PATCH v8 04/16] usb: hub: Use assign_bit() in usb_hub_set_port_power() Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 05/16] usb: hub: Return actual error from hub_configure() in hub_probe() Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 06/16] usb: hub: Associate port@ fwnode with USB port device Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 07/16] usb: core: Move struct usb_port and related APIs to port.h Chen-Yu Tsai
2026-09-04 16:40   ` Alan Stern
2026-09-04 16:44   ` Greg Kroah-Hartman
2026-09-04 17:24     ` Chen-Yu Tsai
2026-09-04 17:52       ` Greg Kroah-Hartman
2026-09-05  8:19         ` Andy Shevchenko
2026-09-05 11:30           ` Greg Kroah-Hartman
2026-09-07  9:11             ` Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 08/16] usb: hub: Pass |struct usb_port*| to usb_port_is_power_on() Chen-Yu Tsai
2026-09-04 16:44   ` Alan Stern
2026-09-04  8:41 ` [PATCH v8 09/16] usb: hub: Use usb_hub_set_port_power() to control port power everywhere Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 10/16] usb: hub: Power on connected M.2 E-key connectors with power sequencing API Chen-Yu Tsai
2026-09-04  9:10   ` sashiko-bot [this message]
2026-09-04  8:41 ` [PATCH v8 11/16] dt-bindings: usb: mediatek,mtk-xhci: Switch to ports for USB connections Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 12/16] power: sequencing: pcie-m2: support matching on remote "port" node Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 13/16] power: sequencing: pcie-m2: Add usb and sdio targets for E-key connector Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 14/16] power: sequencing: pcie-m2: Split Bluetooth unit based on interface Chen-Yu Tsai
2026-09-04  9:08   ` sashiko-bot
2026-09-04  8:41 ` [PATCH v8 15/16] arm64: dts: mediatek: mt8195-cherry: Add M.2 E-key slot Chen-Yu Tsai
2026-09-04  8:41 ` [PATCH v8 16/16] arm64: dts: mediatek: mt8188-geralt: Add WiFi/BT as " Chen-Yu Tsai

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=20260904091020.4DE4F1F00A3D@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=wenst@chromium.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.