On Thu, Jan 26, 2012 at 10:59 PM, Bedia, Vaibhav <vaibhav.bedia@xxxxxx> wrote: > On Thu, Jan 26, 2012 at 21:52:03, Peter De Schrijver wrote: > [...] >> +static int tegra_idle_enter_lp3(struct cpuidle_device *dev, >> + struct cpuidle_driver *drv, int index) >> +{ >> + ktime_t enter, exit; >> + s64 us; >> + >> + local_irq_disable(); >> + local_fiq_disable(); >> + >> + enter = ktime_get(); >> + >> + tegra_cpu_wfi(); >> + >> + exit = ktime_sub(ktime_get(), enter); >> + us = ktime_to_us(exit); >> + >> + local_fiq_enable(); >> + local_irq_enable(); >> + >> + dev->last_residency = us; >> + >> + return index; >> +} > > You can probably drop local_irq_disable() and local_irq_enable(). local_irq_enable() is required by the cpuidle call semantics. See arch/arm/process.c, it has a WARN_ON(irqs_disabled()) after the idle function call. The local_irq_disable() can and probably should be dropped, although a comment that the function is called with interrupts off and is expected to return with interrupts on would be helpful. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html