summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Lee Irwin III <wli@holomorphy.com>2002-11-17 17:57:02 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2002-11-17 17:57:02 -0800
commit2cb925b21f9ccfd34e0d10ec423be65c466448c6 (patch)
tree0517436bd3126729b7c92870275c5ba606c8dc06
parent3a70869407b8798fb6170fdcaae5ee90d3477478 (diff)
[PATCH] Numa-Q bootup failure fix
Make sure the non-boot CPU's aren't taking interrupts before they are ready..
-rw-r--r--arch/i386/kernel/smpboot.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index 879970460b8e..876e95fd57ce 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -419,6 +419,7 @@ void __init smp_callin(void)
smp_store_cpu_info(cpuid);
disable_APIC_timer();
+ local_irq_disable();
/*
* Allow the master to continue.
*/
@@ -1179,13 +1180,18 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
int __devinit __cpu_up(unsigned int cpu)
{
/* This only works at boot for x86. See "rewrite" above. */
- if (test_bit(cpu, &smp_commenced_mask))
+ if (test_bit(cpu, &smp_commenced_mask)) {
+ local_irq_enable();
return -ENOSYS;
+ }
/* In case one didn't come up */
- if (!test_bit(cpu, &cpu_callin_map))
+ if (!test_bit(cpu, &cpu_callin_map)) {
+ local_irq_enable();
return -EIO;
+ }
+ local_irq_enable();
/* Unleash the CPU! */
set_bit(cpu, &smp_commenced_mask);
while (!test_bit(cpu, &cpu_online_map))