From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: sashiko-reviews@lists.linux.dev
Cc: Frank.Li@kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH v2 8/9] mailbox: imx: Don't force-thread the primary handler
Date: Wed, 3 Jun 2026 17:20:14 +0200 [thread overview]
Message-ID: <20260603152014.LHMaWInm@linutronix.de> (raw)
In-Reply-To: <20260603143109.19A6F1F00893@smtp.kernel.org>
On 2026-06-03 14:31:08 [+0000], sashiko-bot@kernel.org wrote:
> While reviewing the driver, I noticed a few other potential regressions outside
> the diff hunks above:
>
> [Severity: High]
> This is a pre-existing issue, but can the timeout loop in imx_mu_generic_tx()
> lead to silent transmission failures?
>
> When processing IMX_MU_TYPE_TXDB_V2, the code loops up to 10 times waiting
> for the readl_poll_timeout() condition:
>
> drivers/mailbox/imx-mailbox.c:imx_mu_generic_tx() {
> ...
> while (ret && (count < 10)) {
> ret = readl_poll_timeout(priv->base + priv->dcfg->xCR[IMX_MU_GCR], val,
> !(val & IMX_MU_xCR_GIRn(priv->dcfg->type, cp->idx)),
> 0, 10000);
> if (ret) {
> dev_warn_ratelimited(...);
> }
> }
> break;
> ...
> }
>
> If all 10 attempts time out, ret is left as -ETIMEDOUT and the while loop
> exits. The code then breaks from the switch block and unconditionally hits
> return 0 at the end of the function instead of returning ret.
>
> Falsely returning success causes the mailbox framework to drop the message,
> leading to silent data loss. Should this return the error code instead?
Guess it wouldn't hurt to forward the error to the caller.
> [Severity: High]
> This is a pre-existing issue, but does the use of time APIs and polling
> with local interrupts disabled lead to hard lockups?
>
> Mailbox transmission (priv->dcfg->tx) is invoked via mbox_send_message()
> with the channel lock (spin_lock_irqsave) held, meaning local interrupts
> are disabled.
>
> Inside imx_mu_tx_waiting_write(), the code polls a hardware register while
> checking time_is_after_jiffies64():
>
> drivers/mailbox/imx-mailbox.c:imx_mu_tx_waiting_write() {
> ...
> do {
> status = imx_mu_read(priv, priv->dcfg->xSR[IMX_MU_TSR]);
> can_write = status & IMX_MU_xSR_TEn(priv->dcfg->type, idx % 4);
> } while (!can_write && time_is_after_jiffies64(timeout_time));
> ...
> }
>
> Because interrupts are disabled, jiffies will not advance on UP systems,
> causing an infinite loop (deadlock).
Interrupts are disabled. Better it does not time out…
It waits IMX_MU_SECO_TX_TOUT which is 3seconds here. I would suggest to
have a udelay(10) or so and then count the loops.
Sebastian
next prev parent reply other threads:[~2026-06-03 15:20 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-03 13:05 [PATCH v2 0/9] mailbox: imx: Use threaded handler to avoid kworker in imx's remoteproc Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 1/9] mailbox: imx: Add a channel shutdown field Sebastian Andrzej Siewior
2026-06-03 13:20 ` sashiko-bot
2026-06-03 14:59 ` Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 2/9] mailbox: imx: Use devm_pm_runtime_enable() Sebastian Andrzej Siewior
2026-06-03 13:27 ` sashiko-bot
2026-06-03 15:00 ` Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 3/9] mailbox: imx: use devm_of_platform_populate() Sebastian Andrzej Siewior
2026-06-03 13:37 ` sashiko-bot
2026-06-03 15:01 ` Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 4/9] mailbox: imx: Use channel index instead of zero in imx_mu_specific_rx() Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 5/9] mailbox: imx: Start splitting the IRQ handler in primary and threaded handler Sebastian Andrzej Siewior
2026-06-03 13:58 ` sashiko-bot
2026-06-03 15:07 ` Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 6/9] mailbox: imx: Move the RX part of the mailbox into the " Sebastian Andrzej Siewior
2026-06-03 13:18 ` Daniel Baluta
2026-06-03 13:20 ` Sebastian Andrzej Siewior
2026-06-03 13:45 ` Daniel Baluta
2026-06-03 15:26 ` Sebastian Andrzej Siewior
2026-06-03 13:05 ` [PATCH v2 7/9] mailbox: imx: Move the RXDB " Sebastian Andrzej Siewior
2026-06-03 14:19 ` sashiko-bot
2026-06-03 13:05 ` [PATCH v2 8/9] mailbox: imx: Don't force-thread the primary handler Sebastian Andrzej Siewior
2026-06-03 14:31 ` sashiko-bot
2026-06-03 15:20 ` Sebastian Andrzej Siewior [this message]
2026-06-03 13:05 ` [PATCH v2 9/9] remoteproc: imx_rproc: Invoke the callback directly Sebastian Andrzej Siewior
2026-06-03 14:45 ` sashiko-bot
2026-06-03 15:21 ` Sebastian Andrzej Siewior
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=20260603152014.LHMaWInm@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=Frank.Li@kernel.org \
--cc=imx@lists.linux.dev \
--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