Re: [linux-pm] [PATCH] CPUidle: compile fix for non-x86

Rafael J. Wysocki
2008-01-31T20:28:10Z

On Thursday, 31 of January 2008, Kevin Hilman wrote:
> [Updated patch pased on suggestions from Venkatesh.]
>
> 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@mvista.com>
>
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index d2fabe7..762d878 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -18,6 +18,14 @@
>
> #include "cpuidle.h"
>
> +#if !defined(CONFIG_SMP)
> +#define cpuidle_kick_cpus() do { } while (0)
> +#elif defined(CONFIG_X86)
> +#define cpuidle_kick_cpus() cpu_idle_wait()
> +#else
> +#error "Arch needs cpu_idle_wait() equivalent here"
> +#endif

Perhaps it would be better to define cpuidle_kick_cpus() as a static inline
function in cpuidle.h . Pretty please?

> +
> DEFINE_PER_CPU(struct cpuidle_device *, cpuidle_devices);
>
> DEFINE_MUTEX(cpuidle_lock);
> @@ -82,7 +90,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();
> }
> }
>
> -