On Tue, 2011-06-07 at 22:00 +0530, Trinabh Gupta wrote: > diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c > index 39a2baa..932392b 100644 > --- a/arch/powerpc/kernel/idle.c > +++ b/arch/powerpc/kernel/idle.c > @@ -102,6 +102,24 @@ void cpu_idle(void) > } > } > > +static void do_nothing(void *unused) > +{ > +} > + > +/* > + * cpu_idle_wait - Used to ensure that all the CPUs come out of the old > + * idle loop and start using the new idle loop. > + * Required while changing idle handler on SMP systems. > + * Caller must have changed idle handler to the new value before the call. > + */ > +void cpu_idle_wait(void) > +{ > + smp_mb(); > + /* kick all the CPUs so that they exit out of old idle routine */ > + smp_call_function(do_nothing, NULL, 1); > +} > +EXPORT_SYMBOL_GPL(cpu_idle_wait); > + > int powersave_nap; > > #ifdef CONFIG_SYSCTL This is gross :-) Do you need to absolutely ensure the idle task has changed or just kicking it with a send reschedule is enough ? Cheers, Ben. _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm