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 --- 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; }
(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;
}
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
linux-stable-mirror@lists.linaro.org