diff options
author | Li Shaohua <shaohua.li@intel.com> | 2005-06-25 17:54:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-25 19:24:29 -0400 |
commit | 6fe940d6c300886de4ff1454d8ffd363172af433 (patch) | |
tree | 58c34aed66a85ff72bdba1d5e3a3e3c967621a04 /arch/i386/kernel/smpboot.c | |
parent | 67664c8f7e74def5adf66298a1245d82af72db2c (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.c | 11 |
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(); |