[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <40726a57-35a9-450d-ba0f-879313f60732@ti.com>
Date: Wed, 22 Oct 2025 11:07:59 -0500
From: Andrew Davis <afd@...com>
To: Beleswar Padhi <b-padhi@...com>, <jassisinghbrar@...il.com>,
<linux-kernel@...r.kernel.org>
CC: <hiagofranco@...il.com>, <hnagalla@...com>, <u-kumar1@...com>
Subject: Re: [RFC PATCH] mailbox: omap-mailbox: Flush out pending msgs before
entering suspend
On 10/22/25 5:20 AM, Beleswar Padhi wrote:
> There may be pending messages in the mailbox FIFO that are not consumed
> by the remote processor for various reasons; the remote processor may
> already be powered off or may be in a bad state. Instead of aborting
> suspend because of these pending messages, flush the FIFOs and proceed
> with suspend. Pending messages could also be restored in the resume
> context, but since remote processors are typically rebooted during
> suspend/resume today, there is no point in restoring stale messages.
>
> Signed-off-by: Beleswar Padhi <b-padhi@...com>
> ---
> drivers/mailbox/omap-mailbox.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/mailbox/omap-mailbox.c b/drivers/mailbox/omap-mailbox.c
> index 680243751d62..5e6373911630 100644
> --- a/drivers/mailbox/omap-mailbox.c
> +++ b/drivers/mailbox/omap-mailbox.c
> @@ -341,13 +341,10 @@ static int omap_mbox_suspend(struct device *dev)
> if (pm_runtime_status_suspended(dev))
> return 0;
>
> - for (fifo = 0; fifo < mdev->num_fifos; fifo++) {
> - if (mbox_read_reg(mdev, MAILBOX_MSGSTATUS(fifo))) {
> - dev_err(mdev->dev, "fifo %d has unexpected unread messages\n",
> - fifo);
> - return -EBUSY;
> - }
> - }
> + /* Flush out pending mbox messages before entering suspend */
> + for (fifo = 0; fifo < mdev->num_fifos; fifo++)
> + while (mbox_read_reg(mdev, MAILBOX_MSGSTATUS(fifo)) != 0)
> + mbox_read_reg(mdev, MAILBOX_MESSAGE(fifo));
I'm still not convinced just throwing out messages is the correct thing
to do here, but for now at very least let's print some warning here when
messages get zapped.
Andrew
>
> for (usr = 0; usr < mdev->num_users; usr++) {
> reg = MAILBOX_IRQENABLE(mdev->intr_type, usr);
Powered by blists - more mailing lists