Messages in this thread | | | From | "Rafael J. Wysocki" <> | Subject | Re: [PATCH] CPUidle: always return with interrupts enabled | Date | Wed, 30 Sep 2009 23:21:33 +0200 |
| |
On Wednesday 30 September 2009, Kevin Hilman wrote: > 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.
Venki, any comments on this?
> 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 > @@ -76,8 +76,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 */
Best, Rafael
| |