39 lines
1.2 KiB
Diff
39 lines
1.2 KiB
Diff
Subject: [PATCH] CPUidle: always return with interrupts enabled
|
|
|
|
In the case where cpuidle_idle_call() returns before changing state
|
|
due to a need_resched(), it was returning with IRQs disabled.
|
|
|
|
This patch ensures IRQs are (re)enabled before returning.
|
|
|
|
Reported-by: Hemanth V <hemanthv@ti.com>
|
|
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
|
|
---
|
|
drivers/cpuidle/cpuidle.c | 5 ++++-
|
|
1 files changed, 4 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
|
|
index ad41f19..12fdd39 100644
|
|
--- a/drivers/cpuidle/cpuidle.c
|
|
+++ b/drivers/cpuidle/cpuidle.c
|
|
@@ -75,8 +75,11 @@ static void cpuidle_idle_call(void)
|
|
#endif
|
|
/* ask the governor for the next state */
|
|
next_state = cpuidle_curr_governor->select(dev);
|
|
- if (need_resched())
|
|
+ if (need_resched()) {
|
|
+ local_irq_enable();
|
|
return;
|
|
+ }
|
|
+
|
|
target_state = &dev->states[next_state];
|
|
|
|
/* enter the state and update stats */
|
|
--
|
|
1.6.4.3
|
|
|
|
--
|
|
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
|
|
the body of a message to majordomo@vger.kernel.org
|
|
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
Please read the FAQ at http://www.tux.org/lkml/
|