On Friday, 1 of February 2008, Kevin Hilman wrote: > OK, one more (last?) time. :) Er, no. > Convert cpu_idle_wait() to cpuidle_kick_cpus() macro which is > SMP-only, and gives error on non supported CPU. > > Signed-off-by: Kevin Hilman <khilman@xxxxxxxxxx> > > diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig > index 80b7ba4..a3e8ef4 100644 > --- a/arch/x86/Kconfig > +++ b/arch/x86/Kconfig > @@ -105,6 +105,9 @@ config ARCH_HAS_ILOG2_U32 > config ARCH_HAS_ILOG2_U64 > def_bool n > > +config ARCH_HAS_CPU_IDLE_WAIT > + def_bool y > + > config GENERIC_CALIBRATE_DELAY > def_bool y > > diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c > index d2fabe7..794962d 100644 > --- a/drivers/cpuidle/cpuidle.c > +++ b/drivers/cpuidle/cpuidle.c > @@ -82,7 +82,7 @@ void cpuidle_uninstall_idle_handler(void) > { > if (enabled_devices && (pm_idle != pm_idle_old)) { > pm_idle = pm_idle_old; > - cpu_idle_wait(); > + cpuidle_kick_cpus(); > } > } > > diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h > index c4e0016..b1c7355 100644 > --- a/include/linux/cpuidle.h > +++ b/include/linux/cpuidle.h > @@ -72,6 +72,19 @@ cpuidle_set_statedata(struct cpuidle_state *state, void *data) > state->driver_data = data; > } > > +#ifdef CONFIG_SMP > +#ifdef CONFIG_ARCH_HAS_CPU_IDLE_WAIT > +static inline void cpuidle_kick_cpus(void) > +{ > + cpu_idle_wait() > +} > +#else /* !ARCH_HAS_CPU_IDLE_WAIT */ Please add the CONFIG_ here too. > +#error "Arch needs cpu_idle_wait() equivalent here" > +#endif /* !ARCH_HAS_CPU_IDLE_WAIT */ And here. > +#else /* !CONFIG_SMP */ > +static inline void cpuidle_kick_cpus(void) {} > +#endif /* !CONFIG_SMP */ > + > struct cpuidle_state_kobj { > struct cpuidle_state *state; > struct completion kobj_unregister; > Thanks, Rafael - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html