aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/process_64.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2008-06-09 10:59:53 -0400
committerIngo Molnar <mingo@elte.hu>2008-06-10 09:52:01 -0400
commit6ddd2a27948f0bd02a2ad001e8a6816898eba0dc (patch)
tree4a9a8b4d1186bb5a03df6c26f23d4a4a8ba6f7bd /arch/x86/kernel/process_64.c
parent9e26d84273541a8c6c2efb705457ca8e6245fb73 (diff)
x86: simplify idle selection
default_idle is selected in cpu_idle(), when no other idle routine is selected. Select it in select_idle_routine() when mwait is not selected. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/process_64.c')
-rw-r--r--arch/x86/kernel/process_64.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index e2319f39988b..db3d89a04399 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -150,12 +150,9 @@ void cpu_idle(void)
150 while (1) { 150 while (1) {
151 tick_nohz_stop_sched_tick(); 151 tick_nohz_stop_sched_tick();
152 while (!need_resched()) { 152 while (!need_resched()) {
153 void (*idle)(void);
154 153
155 rmb(); 154 rmb();
156 idle = pm_idle; 155
157 if (!idle)
158 idle = default_idle;
159 if (cpu_is_offline(smp_processor_id())) 156 if (cpu_is_offline(smp_processor_id()))
160 play_dead(); 157 play_dead();
161 /* 158 /*
@@ -165,7 +162,7 @@ void cpu_idle(void)
165 */ 162 */
166 local_irq_disable(); 163 local_irq_disable();
167 enter_idle(); 164 enter_idle();
168 idle(); 165 pm_idle();
169 /* In many cases the interrupt that ended idle 166 /* In many cases the interrupt that ended idle
170 has already called exit_idle. But some idle 167 has already called exit_idle. But some idle
171 loops can be woken up without interrupt. */ 168 loops can be woken up without interrupt. */