cpuidle: build fix for non-x86
The last posted version of this patch gave compile error on IA64. So, here goes yet another rewrite of the patch. Convert cpu_idle_wait() to cpuidle_kick_cpus() which is SMP-only, and gives error on non supported CPU. Changes from last patch sent by Kevin: Moved the definition of kick_cpus back to cpuidle.c from cpuidle.h: * Having it in .h gives #error on archs which includes the header file without actually having CPU_IDLE configured. To make it work in .h, we need one more #ifdef around that code which makes it messy. * Also, the function is only called from one file. So, it can be in declared statically in .c rather than making it available to everyone who includes the .h file. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Signed-off-by: Kevin Hilman <khilman@mvista.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Родитель
b1d0e4f535
Коммит
a6869cc4cf
|
@ -102,6 +102,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
|
||||
|
||||
|
|
|
@ -27,6 +27,17 @@ static void (*pm_idle_old)(void);
|
|||
|
||||
static int enabled_devices;
|
||||
|
||||
#if defined(CONFIG_ARCH_HAS_CPU_IDLE_WAIT)
|
||||
static void cpuidle_kick_cpus(void)
|
||||
{
|
||||
cpu_idle_wait();
|
||||
}
|
||||
#elif defined(CONFIG_SMP)
|
||||
# error "Arch needs cpu_idle_wait() equivalent here"
|
||||
#else /* !CONFIG_ARCH_HAS_CPU_IDLE_WAIT && !CONFIG_SMP */
|
||||
static void cpuidle_kick_cpus(void) {}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* cpuidle_idle_call - the main idle loop
|
||||
*
|
||||
|
@ -83,7 +94,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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче