Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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();