Signed-off-by: Thomas Gleixner <t...@linutronix.de>
Cc: Jesper Nilsson <jesper.nils...@axis.com>
---
 arch/cris/Kconfig                   |    1 +
 arch/cris/arch-v10/kernel/process.c |    3 ++-
 arch/cris/arch-v32/kernel/process.c |   10 ++++------
 arch/cris/arch-v32/kernel/smp.c     |    4 +---
 arch/cris/kernel/process.c          |   24 ++----------------------
 5 files changed, 10 insertions(+), 32 deletions(-)

Index: linux-2.6/arch/cris/Kconfig
===================================================================
--- linux-2.6.orig/arch/cris/Kconfig
+++ linux-2.6/arch/cris/Kconfig
@@ -48,6 +48,7 @@ config CRIS
        select GENERIC_IRQ_SHOW
        select GENERIC_IOMAP
        select GENERIC_SMP_IDLE_THREAD if ETRAX_ARCH_V32
+       select GENERIC_IDLE_LOOP
        select GENERIC_CMOS_UPDATE
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS2
Index: linux-2.6/arch/cris/arch-v10/kernel/process.c
===================================================================
--- linux-2.6.orig/arch/cris/arch-v10/kernel/process.c
+++ linux-2.6/arch/cris/arch-v10/kernel/process.c
@@ -30,8 +30,9 @@ void etrax_gpio_wake_up_check(void); /* 
 void default_idle(void)
 {
 #ifdef CONFIG_ETRAX_GPIO
-  etrax_gpio_wake_up_check();
+       etrax_gpio_wake_up_check();
 #endif
+       local_irq_enable();
 }
 
 /*
Index: linux-2.6/arch/cris/arch-v32/kernel/process.c
===================================================================
--- linux-2.6.orig/arch/cris/arch-v32/kernel/process.c
+++ linux-2.6/arch/cris/arch-v32/kernel/process.c
@@ -23,12 +23,10 @@ extern void stop_watchdog(void);
 /* We use this if we don't have any better idle routine. */
 void default_idle(void)
 {
-       local_irq_disable();
-       if (!need_resched()) {
-               /* Halt until exception. */
-               __asm__ volatile("ei    \n\t"
-                                "halt      ");
-       }
+       /* Halt until exception. */
+       __asm__ volatile("ei    \n\t"
+                        "halt      ");
+       /* CHECKME: Is this really needed ?? */
        local_irq_enable();
 }
 
Index: linux-2.6/arch/cris/arch-v32/kernel/smp.c
===================================================================
--- linux-2.6.orig/arch/cris/arch-v32/kernel/smp.c
+++ linux-2.6/arch/cris/arch-v32/kernel/smp.c
@@ -145,8 +145,6 @@ smp_boot_one_cpu(int cpuid, struct task_
  * specific stuff such as the local timer and the MMU. */
 void __init smp_callin(void)
 {
-       extern void cpu_idle(void);
-
        int cpu = cpu_now_booting;
        reg_intr_vect_rw_mask vect_mask = {0};
 
@@ -170,7 +168,7 @@ void __init smp_callin(void)
        local_irq_enable();
 
        set_cpu_online(cpu, true);
-       cpu_idle();
+       cpu_startup_entry(CPUHP_ONLINE);
 }
 
 /* Stop execution on this CPU.*/
Index: linux-2.6/arch/cris/kernel/process.c
===================================================================
--- linux-2.6.orig/arch/cris/kernel/process.c
+++ linux-2.6/arch/cris/kernel/process.c
@@ -34,29 +34,9 @@ extern void default_idle(void);
 void (*pm_power_off)(void);
 EXPORT_SYMBOL(pm_power_off);
 
-/*
- * The idle thread. There's no useful work to be
- * done, so just try to conserve power and have a
- * low exit latency (ie sit in a loop waiting for
- * somebody to say that they'd like to reschedule)
- */
-
-void cpu_idle (void)
+void arch_cpu_idle(void)
 {
-       /* endless idle loop with no priority at all */
-       while (1) {
-               rcu_idle_enter();
-               while (!need_resched()) {
-                       /*
-                        * Mark this as an RCU critical section so that
-                        * synchronize_kernel() in the unload path waits
-                        * for our completion.
-                        */
-                       default_idle();
-               }
-               rcu_idle_exit();
-               schedule_preempt_disabled();
-       }
+       default_idle();
 }
 
 void hard_reset_now (void);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to