From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
To: Frank Li <Frank.li@oss.nxp.com>
Cc: tomm.merciai@gmail.com, linux-renesas-soc@vger.kernel.org,
claudiu.beznea.uj@bp.renesas.com, biju.das.jz@bp.renesas.com,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Frank Li <Frank.Li@nxp.com>,
linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] i3c: renesas: Don't register devices when ENTDAA times out
Date: Thu, 6 Aug 2026 11:30:53 +0200 [thread overview]
Message-ID: <anRUTcyZ0EZuctiR@tom-desktop> (raw)
In-Reply-To: <anOc3-M-ItT4mcPg@lizhi-Precision-Tower-5810>
Hi Frank,
Thanks for your review.
On Wed, Aug 05, 2026 at 04:28:15PM -0400, Frank Li wrote:
> On Fri, Jul 31, 2026 at 09:01:46AM +0200, Tommaso Merciai wrote:
> > renesas_i3c_daa() derives the number of newly assigned dynamic addresses
> > from cmd->rx_count, which the response ISR sets to the number of address
> > slots ENTDAA left unassigned. It starts out as zero, which already means
> > "every address was assigned", so a timed out transfer leaves that value
> > in place and it gets used as a result.
> >
> > On a bus with no target connected the ENTDAA times out and the driver
> > registers RENESAS_I3C_MAX_DEVS devices that are not there, each costing
> > the core two seconds on a GETPID that can only time out:
> >
> > i3c i3c-0: Failed to add I3C device at address 9, error -110
> > ...
> > i3c i3c-0: Failed to add I3C device at address 16, error -110
> >
> > Start from maxdevs instead: no address is assigned before ENTDAA runs,
> > and the existing rx_count >= maxdevs check then reports an empty bus.
> >
> > Fixes: d028219a9f14 ("i3c: master: Add basic driver for the Renesas I3C controller")
> > Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> > ---
>
> Does https://lore.kernel.org/linux-i3c/alUZ_N9VdxkhcpqM@lizhi-Precision-Tower-5810/
>
> fix the same problem?
[1] cover the case when ENTDAA completes and reports
rx_count == data_len == maxdevs,.
This is what an empty bus looks like in the response descriptor.
This patch cover the case when ENTDAA never completes.
renesas_i3c_resp_isr() never run then cmd->rx_count = 0
then we will have:
GENMASK(maxdevs - 0 - 1, 0)
GENMASK(8 - 0 - 1, 0) = 0xff
This marks every free slot as newly assigned.
IMHO I think we are seeing the same issues but having different
causes.
[1] https://lore.kernel.org/linux-i3c/alUZ_N9VdxkhcpqM@lizhi-Precision-Tower-5810/
Kind regards,
Tommaso
>
> Frank
>
> > drivers/i3c/master/renesas-i3c.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
> > index 2b501f31e874..f4d9608978a9 100644
> > --- a/drivers/i3c/master/renesas-i3c.c
> > +++ b/drivers/i3c/master/renesas-i3c.c
> > @@ -685,7 +685,7 @@ static int renesas_i3c_daa(struct i3c_master_controller *m)
> >
> > init_completion(&xfer->comp);
> > cmd = xfer->cmds;
> > - cmd->rx_count = 0;
> > + cmd->rx_count = i3c->maxdevs;
> >
> > PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm);
> > ret = PM_RUNTIME_ACQUIRE_ERR(&pm);
> > --
> > 2.54.0
> >
WARNING: multiple messages have this Message-ID (diff)
From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
To: Frank Li <Frank.li@oss.nxp.com>
Cc: tomm.merciai@gmail.com, linux-renesas-soc@vger.kernel.org,
claudiu.beznea.uj@bp.renesas.com, biju.das.jz@bp.renesas.com,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Frank Li <Frank.Li@nxp.com>,
linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] i3c: renesas: Don't register devices when ENTDAA times out
Date: Thu, 6 Aug 2026 11:30:53 +0200 [thread overview]
Message-ID: <anRUTcyZ0EZuctiR@tom-desktop> (raw)
In-Reply-To: <anOc3-M-ItT4mcPg@lizhi-Precision-Tower-5810>
Hi Frank,
Thanks for your review.
On Wed, Aug 05, 2026 at 04:28:15PM -0400, Frank Li wrote:
> On Fri, Jul 31, 2026 at 09:01:46AM +0200, Tommaso Merciai wrote:
> > renesas_i3c_daa() derives the number of newly assigned dynamic addresses
> > from cmd->rx_count, which the response ISR sets to the number of address
> > slots ENTDAA left unassigned. It starts out as zero, which already means
> > "every address was assigned", so a timed out transfer leaves that value
> > in place and it gets used as a result.
> >
> > On a bus with no target connected the ENTDAA times out and the driver
> > registers RENESAS_I3C_MAX_DEVS devices that are not there, each costing
> > the core two seconds on a GETPID that can only time out:
> >
> > i3c i3c-0: Failed to add I3C device at address 9, error -110
> > ...
> > i3c i3c-0: Failed to add I3C device at address 16, error -110
> >
> > Start from maxdevs instead: no address is assigned before ENTDAA runs,
> > and the existing rx_count >= maxdevs check then reports an empty bus.
> >
> > Fixes: d028219a9f14 ("i3c: master: Add basic driver for the Renesas I3C controller")
> > Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> > ---
>
> Does https://lore.kernel.org/linux-i3c/alUZ_N9VdxkhcpqM@lizhi-Precision-Tower-5810/
>
> fix the same problem?
[1] cover the case when ENTDAA completes and reports
rx_count == data_len == maxdevs,.
This is what an empty bus looks like in the response descriptor.
This patch cover the case when ENTDAA never completes.
renesas_i3c_resp_isr() never run then cmd->rx_count = 0
then we will have:
GENMASK(maxdevs - 0 - 1, 0)
GENMASK(8 - 0 - 1, 0) = 0xff
This marks every free slot as newly assigned.
IMHO I think we are seeing the same issues but having different
causes.
[1] https://lore.kernel.org/linux-i3c/alUZ_N9VdxkhcpqM@lizhi-Precision-Tower-5810/
Kind regards,
Tommaso
>
> Frank
>
> > drivers/i3c/master/renesas-i3c.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
> > index 2b501f31e874..f4d9608978a9 100644
> > --- a/drivers/i3c/master/renesas-i3c.c
> > +++ b/drivers/i3c/master/renesas-i3c.c
> > @@ -685,7 +685,7 @@ static int renesas_i3c_daa(struct i3c_master_controller *m)
> >
> > init_completion(&xfer->comp);
> > cmd = xfer->cmds;
> > - cmd->rx_count = 0;
> > + cmd->rx_count = i3c->maxdevs;
> >
> > PM_RUNTIME_ACQUIRE_IF_ENABLED_AUTOSUSPEND(i3c->dev, pm);
> > ret = PM_RUNTIME_ACQUIRE_ERR(&pm);
> > --
> > 2.54.0
> >
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
next prev parent reply other threads:[~2026-08-06 9:31 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-31 7:01 [PATCH] i3c: renesas: Don't register devices when ENTDAA times out Tommaso Merciai
2026-07-31 7:01 ` Tommaso Merciai
2026-07-31 7:18 ` sashiko-bot
2026-07-31 16:12 ` Claudiu Beznea
2026-07-31 16:12 ` Claudiu Beznea
2026-08-05 20:28 ` Frank Li
2026-08-05 20:28 ` Frank Li
2026-08-06 9:30 ` Tommaso Merciai [this message]
2026-08-06 9:30 ` Tommaso Merciai
2026-08-06 18:48 ` Frank Li
2026-08-06 18:48 ` Frank Li
2026-08-08 13:12 ` Alexandre Belloni
2026-08-08 13:12 ` 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=anRUTcyZ0EZuctiR@tom-desktop \
--to=tommaso.merciai.xr@bp.renesas.com \
--cc=Frank.Li@nxp.com \
--cc=Frank.li@oss.nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=biju.das.jz@bp.renesas.com \
--cc=claudiu.beznea.uj@bp.renesas.com \
--cc=linux-i3c@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=tomm.merciai@gmail.com \
--cc=wsa+renesas@sang-engineering.com \
/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.