2018-03-01 03:29:48

by dbasehore .

[permalink] [raw]
Subject: [PATCH] cpu_pm: add syscore_suspend error handling

If cpu_cluster_pm_enter() fails, cpu_pm_exit() should be called. This
will put the CPU in the correct state to resume from the failure.

Signed-off-by: Derek Basehore <[email protected]>
---
kernel/cpu_pm.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/kernel/cpu_pm.c b/kernel/cpu_pm.c
index 67b02e138a47..03bcc0751a51 100644
--- a/kernel/cpu_pm.c
+++ b/kernel/cpu_pm.c
@@ -186,6 +186,9 @@ static int cpu_pm_suspend(void)
return ret;

ret = cpu_cluster_pm_enter();
+ if (ret)
+ cpu_pm_exit();
+
return ret;
}

--
2.16.2.395.g2e18187dfd-goog



Subject: Re: [PATCH] cpu_pm: add syscore_suspend error handling

On 2018-02-28 19:27:54 [-0800], Derek Basehore wrote:
> If cpu_cluster_pm_enter() fails, cpu_pm_exit() should be called. This
> will put the CPU in the correct state to resume from the failure.

Was this triggered or found on review? Either way it was introduced in
6f3eaec87b6b ("cpu_pm: call notifiers during suspend")
and I might need a stable tag.

> Signed-off-by: Derek Basehore <[email protected]>

Sebastian

2018-03-03 03:59:03

by dbasehore .

[permalink] [raw]
Subject: Re: [PATCH] cpu_pm: add syscore_suspend error handling

On Thu, Mar 1, 2018 at 12:39 AM, Sebastian Andrzej Siewior
<[email protected]> wrote:
> On 2018-02-28 19:27:54 [-0800], Derek Basehore wrote:
>> If cpu_cluster_pm_enter() fails, cpu_pm_exit() should be called. This
>> will put the CPU in the correct state to resume from the failure.
>
> Was this triggered or found on review? Either way it was introduced in
> 6f3eaec87b6b ("cpu_pm: call notifiers during suspend")
> and I might need a stable tag.

It was found during review. I was able to verify that this is a bug,
though. The Rockchip RK3399 doesn't use cluster idle except during
suspend. If I just return an error for cpu_cluster_pm_enter, the
machine wedges. Including this patch makes it error out of suspend
gracefully.

>
>> Signed-off-by: Derek Basehore <[email protected]>
>
> Sebastian