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: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
295286a891
commit
0cefa5b9b0
|
@ -334,14 +334,17 @@ static void __cpuinit start_secondary(void *unused)
|
|||
* 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.
|
||||
*/
|
||||
ipi_call_lock_irq();
|
||||
ipi_call_lock();
|
||||
lock_vector_lock();
|
||||
__setup_vector_irq(smp_processor_id());
|
||||
cpu_set(smp_processor_id(), cpu_online_map);
|
||||
unlock_vector_lock();
|
||||
ipi_call_unlock_irq();
|
||||
ipi_call_unlock();
|
||||
per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
|
||||
|
||||
/* enable local interrupts */
|
||||
local_irq_enable();
|
||||
|
||||
setup_secondary_clock();
|
||||
|
||||
wmb();
|
||||
|
|
Loading…
Reference in New Issue