From: Rusty Russell <rusty@rustcorp.com.au>
To: Andi Kleen <ak@suse.de>
Cc: Andrew Morton <akpm@osdl.org>,
manpreet@fabric7.com,
lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>,
discuss@x86-64.org
Subject: Re: [PATCH] i386/x86-64: Fix timer SMP bootup race
Date: Mon, 17 Jan 2005 13:34:24 +1100 [thread overview]
Message-ID: <1105929264.3954.2.camel@localhost.localdomain> (raw)
In-Reply-To: <20050115040951.GC13525@wotan.suse.de>
On Sat, 2005-01-15 at 05:09 +0100, Andi Kleen wrote:
> Fix boot up SMP race in timer setup on i386/x86-64.
How's this? Didn't do x86-64, but tested on i386.
Rusty.
Name: x86: no interrupts from secondary CPUs until officially online
Status: Tested on dual Pentium II, 2.6.11-rc1-bk2
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Andi Kleen reported a problem where a very slow boot caused the timer
interrupt on a secondary CPU to go off before the CPU was actually
brought up by the core code, so the CPU_PREPARE notifier hadn't been
called, so the per-cpu timer code wasn't set up.
This was caused by enabling interrupts around calibrate_delay() on
secondary CPUs, which is not actually neccessary (interrupts on CPU 0
increments jiffies, which is all that is required). So delay enabling
interrupts until the actual __cpu_up() call for that CPU.
Index: linux-2.6.11-rc1-bk2-Misc/arch/i386/kernel/smpboot.c
===================================================================
--- linux-2.6.11-rc1-bk2-Misc.orig/arch/i386/kernel/smpboot.c 2005-01-13 12:10:07.000000000 +1100
+++ linux-2.6.11-rc1-bk2-Misc/arch/i386/kernel/smpboot.c 2005-01-17 12:29:40.000000000 +1100
@@ -383,8 +383,6 @@
setup_local_APIC();
map_cpu_to_logical_apicid();
- local_irq_enable();
-
/*
* Get our bogomips.
*/
@@ -397,7 +395,7 @@
smp_store_cpu_info(cpuid);
disable_APIC_timer();
- local_irq_disable();
+
/*
* Allow the master to continue.
*/
@@ -439,6 +438,10 @@
*/
local_flush_tlb();
cpu_set(smp_processor_id(), cpu_online_map);
+
+ /* We can take interrupts now: we're officially "up". */
+ local_irq_enable();
+
wmb();
cpu_idle();
}
Index: linux-2.6.11-rc1-bk2-Misc/arch/i386/kernel/apic.c
===================================================================
--- linux-2.6.11-rc1-bk2-Misc.orig/arch/i386/kernel/apic.c 2005-01-13 12:10:07.000000000 +1100
+++ linux-2.6.11-rc1-bk2-Misc/arch/i386/kernel/apic.c 2005-01-17 12:29:22.000000000 +1100
@@ -1046,9 +1046,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)
--
A bad analogy is like a leaky screwdriver -- Richard Braakman
next prev parent reply other threads:[~2005-01-17 2:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-15 4:09 [PATCH] i386/x86-64: Fix timer SMP bootup race Andi Kleen
2005-01-15 5:09 ` Rusty Russell
2005-01-15 5:23 ` Andi Kleen
2005-01-15 7:34 ` Rusty Russell
2005-01-15 7:40 ` Andrew Morton
2005-01-15 7:59 ` Andi Kleen
2005-01-16 4:20 ` Rusty Russell
2005-01-16 5:34 ` Andi Kleen
2005-01-16 6:42 ` Rusty Russell
2005-01-15 6:28 ` Andrew Morton
2005-01-15 6:43 ` Andi Kleen
2005-01-15 6:54 ` Andrew Morton
2005-01-15 7:18 ` Andi Kleen
2005-01-17 2:34 ` Rusty Russell [this message]
2005-01-17 5:43 ` Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1105929264.3954.2.camel@localhost.localdomain \
--to=rusty@rustcorp.com.au \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=discuss@x86-64.org \
--cc=linux-kernel@vger.kernel.org \
--cc=manpreet@fabric7.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox