The microblaze idle loop provides a polling and a non polling version,
which are suprisingly both polling, just with slightly different
instrumentation. Remove them and use the generic poller.

Signed-off-by: Thomas Gleixner <t...@linutronix.de>
Cc: Michal Simek <mon...@monstr.eu>
---
 arch/microblaze/Kconfig                 |    2 +
 arch/microblaze/include/asm/processor.h |    3 -
 arch/microblaze/kernel/process.c        |   53 --------------------------------
 3 files changed, 2 insertions(+), 56 deletions(-)

Index: linux-2.6/arch/microblaze/Kconfig
===================================================================
--- linux-2.6.orig/arch/microblaze/Kconfig
+++ linux-2.6/arch/microblaze/Kconfig
@@ -26,6 +26,8 @@ config MICROBLAZE
        select GENERIC_CPU_DEVICES
        select GENERIC_ATOMIC64
        select GENERIC_CLOCKEVENTS
+       select GENERIC_IDLE_LOOP
+       select GENERIC_IDLE_POLL_SETUP
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS
 
Index: linux-2.6/arch/microblaze/include/asm/processor.h
===================================================================
--- linux-2.6.orig/arch/microblaze/include/asm/processor.h
+++ linux-2.6/arch/microblaze/include/asm/processor.h
@@ -22,7 +22,6 @@
 extern const struct seq_operations cpuinfo_op;
 
 # define cpu_relax()           barrier()
-# define cpu_sleep()           do {} while (0)
 
 #define task_pt_regs(tsk) \
                (((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
@@ -160,8 +159,6 @@ unsigned long get_wchan(struct task_stru
 #  define STACK_TOP    TASK_SIZE
 #  define STACK_TOP_MAX        STACK_TOP
 
-void default_idle(void);
-
 #ifdef CONFIG_DEBUG_FS
 extern struct dentry *of_debugfs_root;
 #endif
Index: linux-2.6/arch/microblaze/kernel/process.c
===================================================================
--- linux-2.6.orig/arch/microblaze/kernel/process.c
+++ linux-2.6/arch/microblaze/kernel/process.c
@@ -44,59 +44,6 @@ void show_regs(struct pt_regs *regs)
 void (*pm_power_off)(void) = NULL;
 EXPORT_SYMBOL(pm_power_off);
 
-static int hlt_counter = 1;
-
-static int __init nohlt_setup(char *__unused)
-{
-       hlt_counter = 1;
-       return 1;
-}
-__setup("nohlt", nohlt_setup);
-
-static int __init hlt_setup(char *__unused)
-{
-       hlt_counter = 0;
-       return 1;
-}
-__setup("hlt", hlt_setup);
-
-void default_idle(void)
-{
-       if (likely(hlt_counter)) {
-               local_irq_disable();
-               stop_critical_timings();
-               cpu_relax();
-               start_critical_timings();
-               local_irq_enable();
-       } else {
-               clear_thread_flag(TIF_POLLING_NRFLAG);
-               smp_mb__after_clear_bit();
-               local_irq_disable();
-               while (!need_resched())
-                       cpu_sleep();
-               local_irq_enable();
-               set_thread_flag(TIF_POLLING_NRFLAG);
-       }
-}
-
-void cpu_idle(void)
-{
-       set_thread_flag(TIF_POLLING_NRFLAG);
-
-       /* endless idle loop with no priority at all */
-       while (1) {
-               tick_nohz_idle_enter();
-               rcu_idle_enter();
-               while (!need_resched())
-                       default_idle();
-               rcu_idle_exit();
-               tick_nohz_idle_exit();
-
-               schedule_preempt_disabled();
-               check_pgt_cache();
-       }
-}
-
 void flush_thread(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