Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hexagon: Use generic idle loop

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Magnus Damm <magnus.damm@gmail.com>
Acked-by: Richard Kuo <rkuo@codeaurora.org>
Link: http://lkml.kernel.org/r/20130321215234.338692935@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

+5 -21
+1
arch/hexagon/Kconfig
··· 24 24 select NO_IOPORT 25 25 select GENERIC_IOMAP 26 26 select GENERIC_SMP_IDLE_THREAD 27 + select GENERIC_IDLE_LOOP 27 28 select STACKTRACE_SUPPORT 28 29 select KTIME_SCALAR 29 30 select GENERIC_CLOCKEVENTS
+3 -20
arch/hexagon/kernel/process.c
··· 51 51 * If hardware or VM offer wait termination even though interrupts 52 52 * are disabled. 53 53 */ 54 - static void default_idle(void) 54 + void arch_cpu_idle(void) 55 55 { 56 56 __vmwait(); 57 - } 58 - 59 - void (*idle_sleep)(void) = default_idle; 60 - 61 - void cpu_idle(void) 62 - { 63 - while (1) { 64 - tick_nohz_idle_enter(); 65 - local_irq_disable(); 66 - while (!need_resched()) { 67 - idle_sleep(); 68 - /* interrupts wake us up, but aren't serviced */ 69 - local_irq_enable(); /* service interrupt */ 70 - local_irq_disable(); 71 - } 72 - local_irq_enable(); 73 - tick_nohz_idle_exit(); 74 - schedule(); 75 - } 57 + /* interrupts wake us up, but irqs are still disabled */ 58 + local_irq_enable(); 76 59 } 77 60 78 61 /*
+1 -1
arch/hexagon/kernel/smp.c
··· 184 184 185 185 local_irq_enable(); 186 186 187 - cpu_idle(); 187 + cpu_startup_entry(CPUHP_ONLINE); 188 188 } 189 189 190 190