aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/smpboot.c
diff options
context:
space:
mode:
authorLi Shaohua <shaohua.li@intel.com>2005-06-25 17:54:53 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-25 19:24:29 -0400
commit6fe940d6c300886de4ff1454d8ffd363172af433 (patch)
tree58c34aed66a85ff72bdba1d5e3a3e3c967621a04 /arch/i386/kernel/smpboot.c
parent67664c8f7e74def5adf66298a1245d82af72db2c (diff)
[PATCH] sep initializing rework
Make SEP init per-cpu, so it is hotplug safe. Signed-off-by: Li Shaohua<shaohua.li@intel.com> Signed-off-by: Ashok Raj <ashok.raj@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/kernel/smpboot.c')
-rw-r--r--arch/i386/kernel/smpboot.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index ad74a46e9ef0..c5517f332309 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -449,7 +449,18 @@ static void __init start_secondary(void *unused)
449 * the local TLBs too. 449 * the local TLBs too.
450 */ 450 */
451 local_flush_tlb(); 451 local_flush_tlb();
452
453 /*
454 * We need to hold call_lock, so there is no inconsistency
455 * between the time smp_call_function() determines number of
456 * IPI receipients, and the time when the determination is made
457 * for which cpus receive the IPI. Holding this
458 * lock helps us to not include this cpu in a currently in progress
459 * smp_call_function().
460 */
461 lock_ipi_call_lock();
452 cpu_set(smp_processor_id(), cpu_online_map); 462 cpu_set(smp_processor_id(), cpu_online_map);
463 unlock_ipi_call_lock();
453 464
454 /* We can take interrupts now: we're officially "up". */ 465 /* We can take interrupts now: we're officially "up". */
455 local_irq_enable(); 466 local_irq_enable();