From: Chris Metcalf Date: Thu, 29 Mar 2012 19:57:18 +0000 (-0400) Subject: arch/tile: add "nop" after "nap" to help GX idle power draw X-Git-Tag: next-20120402~50^2~21 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=44faf3125541ff1f29417ad37cc6e9cbaf1f9098;p=karo-tx-linux.git arch/tile: add "nop" after "nap" to help GX idle power draw This avoids the hardware istream prefetcher doing unnecessary work. Signed-off-by: Chris Metcalf --- diff --git a/arch/tile/kernel/entry.S b/arch/tile/kernel/entry.S index f8d61558b5e4..133c4b56a99e 100644 --- a/arch/tile/kernel/entry.S +++ b/arch/tile/kernel/entry.S @@ -85,6 +85,7 @@ STD_ENTRY(cpu_idle_on_new_stack) /* Loop forever on a nap during SMP boot. */ STD_ENTRY(smp_nap) nap + nop /* avoid provoking the icache prefetch with a jump */ j smp_nap /* we are not architecturally guaranteed not to exit nap */ jrp lr /* clue in the backtracer */ STD_ENDPROC(smp_nap) @@ -106,5 +107,6 @@ STD_ENTRY(_cpu_idle) .global _cpu_idle_nap _cpu_idle_nap: nap + nop /* avoid provoking the icache prefetch with a jump */ jrp lr STD_ENDPROC(_cpu_idle) diff --git a/arch/tile/kernel/smp.c b/arch/tile/kernel/smp.c index 757960790cf0..f86887aebaad 100644 --- a/arch/tile/kernel/smp.c +++ b/arch/tile/kernel/smp.c @@ -122,7 +122,7 @@ static void smp_stop_cpu_interrupt(void) set_cpu_online(smp_processor_id(), 0); arch_local_irq_disable_all(); for (;;) - asm("nap"); + asm("nap; nop"); } /* This function calls the 'stop' function on all other CPUs in the system. */