On 03/22/2013 03:23 AM, Thomas Gleixner wrote: > All idle functions in arch/* are more or less the same, plus minus a > few bugs and extra instrumentation, tickless support and other > optional items. > > Implement a generic idle function which resembles the functionality > found in arch/. Provide weak arch_cpu_idle_* functions which can be > overridden by the architecture code if needed. > > Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > --- > arch/Kconfig | 3 + > include/linux/cpu.h | 8 +++ > kernel/cpu/idle.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 116 insertions(+) [...] > + > +/* > + * Generic idle loop implementation > + */ > +static void cpu_idle_loop(void) > +{ > + while (1) { > + tick_nohz_idle_enter(); > + > + while (!need_resched()) { > + check_pgt_cache(); > + rmb(); > + > + if (cpu_is_offline(smp_processor_id())) > + arch_cpu_idle_dead(); > + > + local_irq_disable(); > + arch_cpu_idle_enter(); > + > + if (cpu_idle_force_poll) { > + cpu_idle_poll(); > + } else { > + current_clr_polling(); > + if (!need_resched()) { > + stop_critical_timings(); > + rcu_idle_enter(); > + arch_cpu_idle(); > + WARN_ON_ONCE(!irqs_disabled()); I understand that you have changed it to WARN_ON_ONCE(irqs_disabled()) in the v2 hosted in your git tree.. Sometime ago, Deepthi (in CC) had added such a check and Rafael had faced some weird problems with that, and hence it was removed. Below are some links to that discussion. https://lkml.org/lkml/2012/6/22/48 https://lkml.org/lkml/2012/6/24/132 https://lkml.org/lkml/2012/6/25/402 Rafael, do you still see that problem after applying Thomas' patches? > + rcu_idle_exit(); > + start_critical_timings(); > + } else { > + local_irq_enable(); > + } > + current_set_polling(); > + } > + arch_cpu_idle_exit(); > + } > + tick_nohz_idle_exit(); > + schedule_preempt_disabled(); > + } > +} > + > +void cpu_startup_entry(enum cpuhp_state state) > +{ > + current_set_polling(); > + arch_cpu_idle_prepare(); > + cpu_idle_loop(); > +} > +#endif > > Regards, Srivatsa S. Bhat -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html