RE: [PATCH v2 5.10.y 1/1] mailbox: imx: fix suspend failure

Peng Fan
2024-04-12T06:24:54Z

> Subject: Re: [PATCH v2 5.10.y 1/1] mailbox: imx: fix suspend failure
>
> (Added Ccs again - Robin Gong and Jassi Brar both bounced last time so didn't
> add them back)
>
> Daisuke Mizobuchi wrote on Fri, Apr 12, 2024 at 02:56:48PM +0900:
> > imx_mu_isr() always calls pm_system_wakeup() even when it should not,
> > making the system unable to enter sleep.
> >
> > Suspend fails as follows:
> > armadillo:~# echo mem > /sys/power/state [ 2614.602432] PM: suspend
> > entry (deep) [ 2614.610640] Filesystems sync: 0.004 seconds [
> > 2614.618016] Freezing user space processes ... (elapsed 0.001 seconds)
> done.
> > [ 2614.626555] OOM killer disabled.
> > [ 2614.629792] Freezing remaining freezable tasks ... (elapsed 0.001
> seconds) done.
> > [ 2614.638456] printk: Suspending console(s) (use no_console_suspend
> > to debug) [ 2614.649504] PM: Some devices failed to suspend, or early
> > wake event detected [ 2614.730103] PM: resume devices took 0.080
> > seconds [ 2614.741924] OOM killer enabled.
> > [ 2614.745073] Restarting tasks ... done.
> > [ 2614.754532] PM: suspend exit
> > ash: write error: Resource busy
> > armadillo:~#
> >
> > Upstream commit 892cb524ae8a is correct, so this seems to be a mistake
> > during cherry-pick.
> >
> > Cc: <stable@vger.kernel.org>
> > Fixes: a16f5ae8ade1 ("mailbox: imx: fix wakeup failure from freeze
> > mode")
> > Signed-off-by: Daisuke Mizobuchi <mizo@atmark-techno.com>
> > Reviewed-by: Dominique Martinet <dominique.martinet@atmark-
> techno.com>
>
> Ok.
>
> Thanks,
> Dominique
>
> > ---
> > drivers/mailbox/imx-mailbox.c | 8 ++++----
> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/mailbox/imx-mailbox.c
> > b/drivers/mailbox/imx-mailbox.c index c5663398c6b7..28f5450e4130
> > 100644
> > --- a/drivers/mailbox/imx-mailbox.c
> > +++ b/drivers/mailbox/imx-mailbox.c
> > @@ -331,8 +331,6 @@ static int imx_mu_startup(struct mbox_chan *chan)
> > break;
> > }
> >
> > - priv->suspend = true;
> > -
> > return 0;
> > }
> >
> > @@ -550,8 +548,6 @@ static int imx_mu_probe(struct platform_device
> > *pdev)
> >
> > clk_disable_unprepare(priv->clk);
> >
> > - priv->suspend = false;
> > -
> > return 0;
> >
> > disable_runtime_pm:
> > @@ -614,6 +610,8 @@ static int __maybe_unused
> imx_mu_suspend_noirq(struct device *dev)
> > if (!priv->clk)
> > priv->xcr = imx_mu_read(priv, priv->dcfg->xCR);
> >
> > + priv->suspend = true;
> > +
> > return 0;
> > }
> >
> > @@ -632,6 +630,8 @@ static int __maybe_unused
> imx_mu_resume_noirq(struct device *dev)
> > if (!imx_mu_read(priv, priv->dcfg->xCR) && !priv->clk)
> > imx_mu_write(priv, priv->xcr, priv->dcfg->xCR);
> >
> > + priv->suspend = false;
> > +
> > return 0;
> > }
> >
>

LGTM: Reviewed-by: Peng Fan <peng.fan@nxp.com>