This bug should be fixed by the following patch:
----------------------
From: Kevin Hilman <[email protected]>
Date: Wed, 30 Sep 2009 17:35:53 +0000 (-0700)
Subject: CPUidle: always return with interrupts enabled

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 <[email protected]>
Signed-off-by: Kevin Hilman <[email protected]>
---

diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 8504a21..910c49d 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 */

-- 
WARNING: at arch/arm/kernel/process.c:174 cpu_idle+0x8c/0xa0()
https://bugs.launchpad.net/bugs/458533
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to