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

Commit 234c7f1a authored by James Hogan's avatar James Hogan
Browse files

metag: smp: enable irqs after set_cpu_online



In secondary_start_kernel() interrupts should be enabled with
local_irq_enable() after the cpu is marked as online with
set_cpu_online(). Otherwise it's possible for a timer interrupt to
trigger a softirq, which if the cpu is marked as offline may have it's
affinity altered.

Reported-by: default avatarKirill Tkhai <tkhai@yandex.ru>
Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatar"Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Kirill Tkhai <tkhai@yandex.ru>
parent 42748752
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -379,12 +379,7 @@ asmlinkage void secondary_start_kernel(void)

	setup_priv();

	/*
	 * Enable local interrupts.
	 */
	tbi_startup_interrupt(TBID_SIGNUM_TRT);
	notify_cpu_starting(cpu);
	local_irq_enable();

	pr_info("CPU%u (thread %u): Booted secondary processor\n",
		cpu, cpu_2_hwthread_id[cpu]);
@@ -397,6 +392,12 @@ asmlinkage void secondary_start_kernel(void)
	 */
	set_cpu_online(cpu, true);

	/*
	 * Enable local interrupts.
	 */
	tbi_startup_interrupt(TBID_SIGNUM_TRT);
	local_irq_enable();

	/*
	 * OK, it's off to the idle thread for us
	 */