|
@@ -8,6 +8,7 @@
|
|
#include <linux/pm.h>
|
|
#include <linux/pm.h>
|
|
#include <linux/clockchips.h>
|
|
#include <linux/clockchips.h>
|
|
#include <asm/system.h>
|
|
#include <asm/system.h>
|
|
|
|
+#include <asm/apic.h>
|
|
|
|
|
|
unsigned long idle_halt;
|
|
unsigned long idle_halt;
|
|
EXPORT_SYMBOL(idle_halt);
|
|
EXPORT_SYMBOL(idle_halt);
|
|
@@ -122,6 +123,21 @@ void default_idle(void)
|
|
EXPORT_SYMBOL(default_idle);
|
|
EXPORT_SYMBOL(default_idle);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+void stop_this_cpu(void *dummy)
|
|
|
|
+{
|
|
|
|
+ local_irq_disable();
|
|
|
|
+ /*
|
|
|
|
+ * Remove this CPU:
|
|
|
|
+ */
|
|
|
|
+ cpu_clear(smp_processor_id(), cpu_online_map);
|
|
|
|
+ disable_local_APIC();
|
|
|
|
+
|
|
|
|
+ for (;;) {
|
|
|
|
+ if (hlt_works(smp_processor_id()))
|
|
|
|
+ halt();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
static void do_nothing(void *unused)
|
|
static void do_nothing(void *unused)
|
|
{
|
|
{
|
|
}
|
|
}
|