Commit 0cefa5b9 authored by Manfred Spraul's avatar Manfred Spraul Committed by Ingo Molnar

arch/x86/kernel/smpboot.c: Clarify when irq processing begins.

Secondary cpus start with local interrupts disabled.
start_secondary() first initializes the new cpu, then it enables the
local interrupts. (although interrupts are enabled within smp_callin()
as well).

Right now, the local interrupts are enabled as a side effect of calling
ipi_call_lock_irq().

The attached patch clarifies when local interrupts are enabled.
Signed-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 295286a8
...@@ -334,14 +334,17 @@ static void __cpuinit start_secondary(void *unused) ...@@ -334,14 +334,17 @@ static void __cpuinit start_secondary(void *unused)
* does not change while we are assigning vectors to cpus. Holding * does not change while we are assigning vectors to cpus. Holding
* this lock ensures we don't half assign or remove an irq from a cpu. * this lock ensures we don't half assign or remove an irq from a cpu.
*/ */
ipi_call_lock_irq(); ipi_call_lock();
lock_vector_lock(); lock_vector_lock();
__setup_vector_irq(smp_processor_id()); __setup_vector_irq(smp_processor_id());
cpu_set(smp_processor_id(), cpu_online_map); cpu_set(smp_processor_id(), cpu_online_map);
unlock_vector_lock(); unlock_vector_lock();
ipi_call_unlock_irq(); ipi_call_unlock();
per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
/* enable local interrupts */
local_irq_enable();
setup_secondary_clock(); setup_secondary_clock();
wmb(); wmb();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment