aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r--arch/x86/kernel/process.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index c622772744d8..a4da7c4b3129 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -8,6 +8,7 @@
8#include <linux/pm.h> 8#include <linux/pm.h>
9#include <linux/clockchips.h> 9#include <linux/clockchips.h>
10#include <asm/system.h> 10#include <asm/system.h>
11#include <asm/apic.h>
11 12
12unsigned long idle_halt; 13unsigned long idle_halt;
13EXPORT_SYMBOL(idle_halt); 14EXPORT_SYMBOL(idle_halt);
@@ -122,6 +123,21 @@ void default_idle(void)
122EXPORT_SYMBOL(default_idle); 123EXPORT_SYMBOL(default_idle);
123#endif 124#endif
124 125
126void stop_this_cpu(void *dummy)
127{
128 local_irq_disable();
129 /*
130 * Remove this CPU:
131 */
132 cpu_clear(smp_processor_id(), cpu_online_map);
133 disable_local_APIC();
134
135 for (;;) {
136 if (hlt_works(smp_processor_id()))
137 halt();
138 }
139}
140
125static void do_nothing(void *unused) 141static void do_nothing(void *unused)
126{ 142{
127} 143}