Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a6869cc4cfd633d909918f1489a6a8ac668cd6aa
Commit:     a6869cc4cfd633d909918f1489a6a8ac668cd6aa
Parent:     b1d0e4f535e10775cffde922208b49629169aeaa
Author:     Venki Pallipadi <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 8 17:05:44 2008 -0800
Committer:  Len Brown <[EMAIL PROTECTED]>
CommitDate: Sat Feb 9 03:33:40 2008 -0500

    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 <[EMAIL PROTECTED]>
    Signed-off-by: Kevin Hilman <[EMAIL PROTECTED]>
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
---
 arch/x86/Kconfig          |    3 +++
 drivers/cpuidle/cpuidle.c |   13 ++++++++++++-
 2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 65a70b7..a64d532 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -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
 
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 2c4b2d4..60f71e6 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -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();
        }
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to