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