diff options
| author | William Lee Irwin III <wli@holomorphy.com> | 2002-11-17 17:57:02 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-11-17 17:57:02 -0800 |
| commit | 2cb925b21f9ccfd34e0d10ec423be65c466448c6 (patch) | |
| tree | 0517436bd3126729b7c92870275c5ba606c8dc06 | |
| parent | 3a70869407b8798fb6170fdcaae5ee90d3477478 (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.c | 10 |
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)) |
