Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Chen-Yu Tsai" <wenst@chromium.org>
Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH v3 01/13] device property: Add fwnode_graph_get_port_by_id()
Date: Fri, 03 Jul 2026 11:15:29 +0000	[thread overview]
Message-ID: <20260703111529.E9A891F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260703110317.1283411-2-wenst@chromium.org>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] `fwnode_graph_get_port_by_id()` fails to find a port if its endpoints are unconnected or connected to disabled remote devices due to missing `FWNODE_GRAPH_DEVICE_DISABLED` flag.
- [Medium] `fwnode_graph_get_port_by_id()` cannot find valid port nodes that do not contain any endpoints, diverging from `of_graph_get_port_by_id()` behavior.
--

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

device property: Add fwnode_graph_get_port_by_id()

This commit introduces fwnode_graph_get_port_by_id() to allow drivers to
obtain a reference to a port firmware node by its ID. The helper is
implemented by finding the matching endpoint first and then returning its
parent node. It is intended to support upcoming USB power sequencing
integration.

> diff --git a/drivers/base/property.c b/drivers/base/property.c
> index e08eadd66f4f9..c5e7e00f1b0cd 100644
> --- a/drivers/base/property.c
> +++ b/drivers/base/property.c
[ ... ]
> @@ -1346,6 +1346,28 @@ int fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
[ ... ]
> +struct fwnode_handle *fwnode_graph_get_port_by_id(struct fwnode_handle *fwnode, u32 id)
> +{
> +	struct fwnode_handle *ep;
> +

[Severity: Medium]
Could this regression cause the function to miss port nodes that are
completely empty of endpoints?

Because this relies on fwnode_graph_get_endpoint_by_id() (which iterates over
endpoints), if a port node is defined in firmware solely to hold properties
(like vbus-supply) but has no endpoint child nodes, this function will return
NULL. This seems to diverge from the behavior of of_graph_get_port_by_id(),
which correctly finds empty port nodes.

[Severity: High]
Does this call need the FWNODE_GRAPH_DEVICE_DISABLED flag to avoid a
regression where ports with disabled or unconnected remote devices are skipped?

By omitting FWNODE_GRAPH_DEVICE_DISABLED, fwnode_graph_get_endpoint_by_id()
evaluates with enabled_only = true. If a port's remote device is disabled
in the device tree, or if the port is unconnected, it will skip those
endpoints and return NULL. This could cause USB port devices to lose their
firmware node association if the remote connector is disabled, preventing
subsystems from reading the port's properties.

> +	ep = fwnode_graph_get_endpoint_by_id(fwnode, id, 0, FWNODE_GRAPH_ENDPOINT_NEXT);
> +	if (!ep)
> +		return NULL;
> +
> +	return fwnode_get_next_parent(ep);
> +}
> +EXPORT_SYMBOL_GPL(fwnode_graph_get_port_by_id);

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

  reply	other threads:[~2026-07-03 11:15 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-03 11:03 [PATCH v3 00/13] arm64: mediatek: Add M.2 E-key slot on Chromebooks Chen-Yu Tsai
2026-07-03 11:03 ` [PATCH v3 01/13] device property: Add fwnode_graph_get_port_by_id() Chen-Yu Tsai
2026-07-03 11:15   ` sashiko-bot [this message]
2026-07-03 11:03 ` [PATCH v3 02/13] device property: Add fwnode_graph_get_next_port_endpoint() Chen-Yu Tsai
2026-07-03 11:17   ` sashiko-bot
2026-07-03 12:04   ` Bartosz Golaszewski
2026-07-03 12:46   ` Andy Shevchenko
2026-07-03 11:03 ` [PATCH v3 03/13] power: sequencing: Add pwrseq_power_is_on() Chen-Yu Tsai
2026-07-03 11:16   ` sashiko-bot
2026-07-03 12:07   ` Bartosz Golaszewski
2026-07-03 12:17     ` Chen-Yu Tsai
2026-07-03 13:18       ` Bartosz Golaszewski
2026-07-03 11:03 ` [PATCH v3 04/13] usb: hub: Return actual error from hub_configure() in hub_probe() Chen-Yu Tsai
2026-07-03 11:03 ` [PATCH v3 05/13] usb: hub: Associate port@ fwnode with USB port device Chen-Yu Tsai
2026-07-03 11:18   ` sashiko-bot
2026-07-03 12:09   ` Bartosz Golaszewski
2026-07-03 13:01   ` Andy Shevchenko
2026-07-03 13:25     ` Chen-Yu Tsai
2026-07-03 13:34       ` Andy Shevchenko
2026-07-03 11:03 ` [PATCH v3 06/13] usb: hub: Pass |struct usb_port*| to usb_port_is_power_on() Chen-Yu Tsai
2026-07-03 13:11   ` Andy Shevchenko
2026-07-03 13:17     ` Chen-Yu Tsai
2026-07-03 13:33       ` Andy Shevchenko
2026-07-03 11:03 ` [PATCH v3 07/13] usb: hub: Use usb_hub_set_port_power() to control port power everywhere Chen-Yu Tsai
2026-07-03 12:12   ` Bartosz Golaszewski
2026-07-03 11:03 ` [PATCH v3 08/13] usb: hub: Power on connected M.2 E-key connectors with power sequencing API Chen-Yu Tsai
2026-07-03 11:29   ` sashiko-bot
2026-07-03 12:41   ` Bartosz Golaszewski
2026-07-03 12:58     ` Chen-Yu Tsai
2026-07-03 13:16       ` Bartosz Golaszewski
2026-07-03 13:20         ` Chen-Yu Tsai
2026-07-03 13:19   ` Andy Shevchenko
2026-07-03 11:03 ` [PATCH v3 09/13] dt-bindings: usb: mediatek,mtk-xhci: Switch to ports for USB connections Chen-Yu Tsai
2026-07-05  9:43   ` Krzysztof Kozlowski
2026-07-03 11:03 ` [PATCH v3 10/13] power: sequencing: pcie-m2: support matching on remote "port" node Chen-Yu Tsai
2026-07-03 12:57   ` Andy Shevchenko
2026-07-03 11:03 ` [PATCH v3 11/13] power: sequencing: pcie-m2: Add usb and sdio targets for E-key connector Chen-Yu Tsai
2026-07-03 11:03 ` [PATCH v3 12/13] arm64: dts: mediatek: mt8195-cherry: Add M.2 E-key slot Chen-Yu Tsai
2026-07-03 11:03 ` [PATCH v3 13/13] arm64: dts: mediatek: mt8188-geralt: Add WiFi/BT as " Chen-Yu Tsai
2026-07-03 13:19 ` [PATCH v3 00/13] arm64: mediatek: Add M.2 E-key slot on Chromebooks Bartosz Golaszewski

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=20260703111529.E9A891F000E9@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox