提交 a6869cc4 编写于 作者: V Venki Pallipadi 提交者: Len Brown

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: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: NKevin Hilman <khilman@mvista.com>
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 b1d0e4f5
...@@ -102,6 +102,9 @@ config ARCH_HAS_ILOG2_U32 ...@@ -102,6 +102,9 @@ config ARCH_HAS_ILOG2_U32
config ARCH_HAS_ILOG2_U64 config ARCH_HAS_ILOG2_U64
def_bool n def_bool n
config ARCH_HAS_CPU_IDLE_WAIT
def_bool y
config GENERIC_CALIBRATE_DELAY config GENERIC_CALIBRATE_DELAY
def_bool y def_bool y
......
...@@ -27,6 +27,17 @@ static void (*pm_idle_old)(void); ...@@ -27,6 +27,17 @@ static void (*pm_idle_old)(void);
static int enabled_devices; 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 * cpuidle_idle_call - the main idle loop
* *
...@@ -83,7 +94,7 @@ void cpuidle_uninstall_idle_handler(void) ...@@ -83,7 +94,7 @@ void cpuidle_uninstall_idle_handler(void)
{ {
if (enabled_devices && (pm_idle != pm_idle_old)) { if (enabled_devices && (pm_idle != pm_idle_old)) {
pm_idle = pm_idle_old; pm_idle = pm_idle_old;
cpu_idle_wait(); cpuidle_kick_cpus();
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册