All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.