[PATCH] cpu state clean after hot remove

Clean CPU states in order to reuse smp boot code for CPU hotplug.

Signed-off-by: Li Shaohua<shaohua.li@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Li Shaohua 2005-06-25 14:54:56 -07:00 committed by Linus Torvalds
parent 0bb3184df5
commit e1367daf3e
7 changed files with 186 additions and 42 deletions

View file

@ -152,21 +152,19 @@ static void poll_idle (void)
/* We don't actually take CPU down, just spin without interrupts. */
static inline void play_dead(void)
{
/* This must be done before dead CPU ack */
cpu_exit_clear();
wbinvd();
mb();
/* Ack it */
__get_cpu_var(cpu_state) = CPU_DEAD;
/* We shouldn't have to disable interrupts while dead, but
* some interrupts just don't seem to go away, and this makes
* it "work" for testing purposes. */
/* Death loop */
while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE)
cpu_relax();
/*
* With physical CPU hotplug, we should halt the cpu
*/
local_irq_disable();
__flush_tlb_all();
cpu_set(smp_processor_id(), cpu_online_map);
enable_APIC_timer();
local_irq_enable();
while (1)
__asm__ __volatile__("hlt":::"memory");
}
#else
static inline void play_dead(void)