Linux-i3c Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Lakshay Piplani" <lakshay.piplani@nxp.com>
Cc: conor+dt@kernel.org, robh@kernel.org, Frank.Li@kernel.org,
	devicetree@vger.kernel.org,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	linux-i3c@lists.infradead.org, mfd@lists.linux.dev,
	lee@kernel.org
Subject: Re: [PATCH v20 6/8] i3c: hub: Add support for the I3C interface in the I3C hub
Date: Tue, 22 Sep 2026 10:53:56 +0000	[thread overview]
Message-ID: <20260922105357.5ABFF1F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260922103551.2754613-7-lakshay.piplani@nxp.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] i3c: hub: ENTDAA-discovered downstream devices are misrouted to parent bus
--

commit bf3909722bdabc30e1d69d666d5732199356fb61
Author: Lakshay Piplani <lakshay.piplani@nxp.com>

i3c: hub: Add support for the I3C interface in the I3C hub

This commit adds virtual I3C bus support for hubs by creating virtual
master controllers for downstream ports and forwarding bus operations
through the hub device.

> diff --git a/drivers/i3c/hub.c b/drivers/i3c/hub.c
> new file mode 100644
> --- /dev/null
> +++ b/drivers/i3c/hub.c
[ ... ]
> +static int i3c_hub_do_daa(struct i3c_hub *hub,
> +			  struct i3c_master_controller *controller)
> +{
> +	struct i3c_master_controller *parent;
> +	int ret;
[ ... ]
> +	mutex_lock(&hub->lock);
> +	i3c_hub_enable_port(controller);
> +
> +	/*
> +	 * Downstream devices reachable through hub target-port routes share the
> +	 * parent controller's I3C address space. The hub gates access to a
> +	 * target-port network, but it does not create an independent dynamic
> +	 * address domain per virtual bus.
> +	 *
> +	 * Run DAA on the parent controller so dynamic addresses remain unique
> +	 * across all downstream devices, even when they are behind different
> +	 * target ports.
> +	 *
> +	 * The current hub model shares the parent controller's dynamic-address
> +	 * domain and does not support independent per-port DAA domains, so a
> +	 * DAA result does not go stale behind a port toggle. Addresses reserved
> +	 * from the Device Tree are held for the lifetime of the parent bus and
> +	 * are never released on a port toggle, so enabling or disabling a port
> +	 * only gates reachability and never causes an address to be handed out
> +	 * twice.
> +	 */
> +	ret = i3c_master_do_daa(parent);

[Severity: High]
Does delegating DAA to the parent controller here misroute newly discovered
downstream devices?

When i3c_master_do_daa() executes ENTDAA on the parent controller, any
downstream I3C device lacking a static address will be assigned an address
and added directly to the physical parent's bus.devs.i3c list instead of
the virtual hub bus.

Because these devices are attached directly to the parent, won't their
subsequent transfers bypass the virtual controller's priv_xfers routing?
If so, the hub port would never be enabled during normal communication,
causing all transfers to the device to fail with a NACK or timeout.

> +	i3c_hub_disable_port(controller);
> +	mutex_unlock(&hub->lock);
> +
> +	return ret;
> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260922103551.2754613-1-lakshay.piplani@nxp.com?part=6

-- 
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

  reply	other threads:[~2026-09-22 10:54 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-22 10:35 [PATCH v20 0/8] Add support for NXP P3H2x4x I3C hub driver Lakshay Piplani
2026-09-22 10:35 ` [PATCH v20 1/8] i3c: master: Add APIs for I3C hub support Lakshay Piplani
2026-09-22 10:48   ` sashiko-bot
2026-09-22 10:35 ` [PATCH v20 2/8] i3c: master: Add controller-only device operation helpers Lakshay Piplani
2026-09-22 10:45   ` sashiko-bot
2026-09-22 10:35 ` [PATCH v20 3/8] dt-bindings: i3c: Add NXP P3H2x4x i3c-hub support Lakshay Piplani
2026-09-22 10:44   ` sashiko-bot
2026-09-22 10:35 ` [PATCH v20 4/8] mfd: p3h2x4x: Add driver for NXP P3H2x4x i3c hub and on-die regulator Lakshay Piplani
2026-09-22 10:50   ` sashiko-bot
2026-09-22 10:35 ` [PATCH v20 5/8] regulator: p3h2x4x: Add driver for on-die regulators in NXP P3H2x4x i3c hub Lakshay Piplani
2026-09-22 10:47   ` sashiko-bot
2026-09-22 10:35 ` [PATCH v20 6/8] i3c: hub: Add support for the I3C interface in the I3C hub Lakshay Piplani
2026-09-22 10:53   ` sashiko-bot [this message]
2026-09-22 10:35 ` [PATCH v20 7/8] i3c: hub: p3h2x4x: Add support for NXP P3H2x4x I3C hub functionality Lakshay Piplani
2026-09-22 10:55   ` sashiko-bot
2026-09-22 10:35 ` [PATCH v20 8/8] i3c: hub: p3h2x4x: Add SMBus slave mode support Lakshay Piplani
2026-09-22 10:55   ` sashiko-bot
2026-09-30 14:23 ` (subset) [PATCH v20 0/8] Add support for NXP P3H2x4x I3C hub driver Alexandre Belloni

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=20260922105357.5ABFF1F00893@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=alexandre.belloni@bootlin.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=lakshay.piplani@nxp.com \
    --cc=lee@kernel.org \
    --cc=linux-i3c@lists.infradead.org \
    --cc=mfd@lists.linux.dev \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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