From: Chris Wright Date: Wed, 1 Jun 2005 06:40:23 +0000 (-0700) Subject: add x86_64 avoid SMP bootup race fix from Andi X-Git-Tag: v2.6.11.12~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f6186bf784cb67b82a797676768c785495cf0977;p=thirdparty%2Fkernel%2Fstable-queue.git add x86_64 avoid SMP bootup race fix from Andi --- diff --git a/queue/series b/queue/series index f675adbbe1f..c38cc254b4e 100644 --- a/queue/series +++ b/queue/series @@ -1,3 +1,4 @@ fix-pte_unmap.patch netfilter-ip_queue-deadlock-fix.patch hfsplus-oops-hfs-leak-fix.patch +x86_64-avoid-SMP-bootup-race.patch diff --git a/queue/x86_64-avoid-SMP-bootup-race.patch b/queue/x86_64-avoid-SMP-bootup-race.patch new file mode 100644 index 00000000000..f3849f418ae --- /dev/null +++ b/queue/x86_64-avoid-SMP-bootup-race.patch @@ -0,0 +1,58 @@ +From stable-bounces@linux.kernel.org Tue May 31 07:08:57 2005 +Date: Tue, 31 May 2005 16:08:47 +0200 +From: Andi Kleen +To: stable@kernel.org +ubject: [PATCH] x86_64: avoid SMP boot up race + +Keep interrupts disabled during smp bootup + +This avoids a race that breaks SMP bootup on some machines. +The race is not fully plugged (that is only done with much +more changes in 2.6.12), but should be good enough +for most people. + +Keeping the interrupts disabled here is ok because we +don't rely on the timer interrupt for local APIC +timer setup, but always read the timer registers +directly. + +(originally from Rusty Russell iirc) + +Signed-off-by: ak@suse.de +Signed-off-by: Chris Wright + +diff -u linux/arch/x86_64/kernel/apic.c-o linux/arch/x86_64/kernel/apic.c +--- linux/arch/x86_64/kernel/apic.c-o 2005-05-31 16:40:01.000000000 +0200 ++++ linux/arch/x86_64/kernel/apic.c 2005-05-31 16:44:05.000000000 +0200 +@@ -775,9 +775,7 @@ + + void __init setup_secondary_APIC_clock(void) + { +- local_irq_disable(); /* FIXME: Do we need this? --RR */ + setup_APIC_timer(calibration_result); +- local_irq_enable(); + } + + void __init disable_APIC_timer(void) +diff -u linux/arch/x86_64/kernel/smpboot.c-o linux-2.6.11/arch/x86_64/kernel/smpboot.c +--- linux/arch/x86_64/kernel/smpboot.c-o 2005-03-21 14:04:11.000000000 +0100 ++++ linux/arch/x86_64/kernel/smpboot.c 2005-05-31 16:44:07.000000000 +0200 +@@ -309,8 +309,6 @@ + Dprintk("CALLIN, before setup_local_APIC().\n"); + setup_local_APIC(); + +- local_irq_enable(); +- + /* + * Get our bogomips. + */ +@@ -324,8 +322,6 @@ + */ + smp_store_cpu_info(cpuid); + +- local_irq_disable(); +- + /* + * Allow the master to continue. + */ +