aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-12-18 00:40:56 -0500
committerPaul Mundt <lethal@linux-sh.org>2009-12-20 21:57:33 -0500
commit73a38b839b9295216e8d44dabf54de88270e77b8 (patch)
tree977d40b6198a8a6b5e5c28590b22610993a78b51 /arch
parent3147093e1de59081e82fb1d815424c3e952caf3e (diff)
sh: Only use bl bit toggling for sleeping idle.
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>
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/kernel/idle.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c
index 8e47565dcfd1..6b3d706deac1 100644
--- a/arch/sh/kernel/idle.c
+++ b/arch/sh/kernel/idle.c
@@ -62,6 +62,7 @@ void default_idle(void)
62 clear_thread_flag(TIF_POLLING_NRFLAG); 62 clear_thread_flag(TIF_POLLING_NRFLAG);
63 smp_mb__after_clear_bit(); 63 smp_mb__after_clear_bit();
64 64
65 set_bl_bit();
65 if (!need_resched()) { 66 if (!need_resched()) {
66 local_irq_enable(); 67 local_irq_enable();
67 cpu_sleep(); 68 cpu_sleep();
@@ -69,6 +70,7 @@ void default_idle(void)
69 local_irq_enable(); 70 local_irq_enable();
70 71
71 set_thread_flag(TIF_POLLING_NRFLAG); 72 set_thread_flag(TIF_POLLING_NRFLAG);
73 clear_bl_bit();
72 } else 74 } else
73 poll_idle(); 75 poll_idle();
74} 76}
@@ -92,7 +94,6 @@ void cpu_idle(void)
92 check_pgt_cache(); 94 check_pgt_cache();
93 rmb(); 95 rmb();
94 96
95 set_bl_bit();
96 local_irq_disable(); 97 local_irq_disable();
97 /* Don't trace irqs off for idle */ 98 /* Don't trace irqs off for idle */
98 stop_critical_timings(); 99 stop_critical_timings();
@@ -103,7 +104,6 @@ void cpu_idle(void)
103 */ 104 */
104 WARN_ON(irqs_disabled()); 105 WARN_ON(irqs_disabled());
105 start_critical_timings(); 106 start_critical_timings();
106 clear_bl_bit();
107 } 107 }
108 108
109 tick_nohz_restart_sched_tick(); 109 tick_nohz_restart_sched_tick();