44 lines
1.4 KiB
Diff
44 lines
1.4 KiB
Diff
From: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
Subject: [PATCH 01/30] cpuidle: mvebu: indicate failure to enter deeper sleep
|
|
states
|
|
MIME-Version: 1.0
|
|
Content-Disposition: inline
|
|
Content-Transfer-Encoding: 8bit
|
|
Content-Type: text/plain; charset="utf-8"
|
|
|
|
The cpuidle ->enter method expects the return value to be the sleep
|
|
state we entered. Returning negative numbers or other codes is not
|
|
permissible since coupled CPU idle was merged.
|
|
|
|
At least some of the mvebu_v7_cpu_suspend() implementations return the
|
|
value from cpu_suspend(), which returns zero if the CPU vectors back
|
|
into the kernel via cpu_resume() (the success case), or the non-zero
|
|
return value of the suspend actor, or one (failure cases).
|
|
|
|
We do not want to be returning the failure case value back to CPU idle
|
|
as that indicates that we successfully entered one of the deeper idle
|
|
states. Always return zero instead, indicating that we slept for the
|
|
shortest amount of time.
|
|
|
|
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|
---
|
|
drivers/cpuidle/cpuidle-mvebu-v7.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
--- a/drivers/cpuidle/cpuidle-mvebu-v7.c
|
|
+++ b/drivers/cpuidle/cpuidle-mvebu-v7.c
|
|
@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cp
|
|
ret = mvebu_v7_cpu_suspend(deepidle);
|
|
cpu_pm_exit();
|
|
|
|
+ /*
|
|
+ * If we failed to enter the desired state, indicate that we
|
|
+ * slept lightly.
|
|
+ */
|
|
if (ret)
|
|
- return ret;
|
|
+ return 0;
|
|
|
|
return index;
|
|
}
|