sh: Only use bl bit toggling for sleeping idle.
authorPaul Mundt <lethal@linux-sh.org>
Fri, 18 Dec 2009 05:40:56 +0000 (14:40 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 21 Dec 2009 02:57:33 +0000 (11:57 +0900)
We don't actually require this in the cpu_relax() polling case, so just
cuddle these around the sleeping version.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/kernel/idle.c

index 8e47565dcfd1b7f0b009a5a03204942611839d7c..6b3d706deac10954b91bb1721639ce6e91044710 100644 (file)
@@ -62,6 +62,7 @@ void default_idle(void)
                clear_thread_flag(TIF_POLLING_NRFLAG);
                smp_mb__after_clear_bit();
 
+               set_bl_bit();
                if (!need_resched()) {
                        local_irq_enable();
                        cpu_sleep();
@@ -69,6 +70,7 @@ void default_idle(void)
                        local_irq_enable();
 
                set_thread_flag(TIF_POLLING_NRFLAG);
+               clear_bl_bit();
        } else
                poll_idle();
 }
@@ -92,7 +94,6 @@ void cpu_idle(void)
                        check_pgt_cache();
                        rmb();
 
-                       set_bl_bit();
                        local_irq_disable();
                        /* Don't trace irqs off for idle */
                        stop_critical_timings();
@@ -103,7 +104,6 @@ void cpu_idle(void)
                         */
                        WARN_ON(irqs_disabled());
                        start_critical_timings();
-                       clear_bl_bit();
                }
 
                tick_nohz_restart_sched_tick();