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: Kirill Tkhai <tkhai@yandex.ru> Signed-off-by: James Hogan <james.hogan@imgtec.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> Cc: Kirill Tkhai <tkhai@yandex.ru>
This commit is contained in:
parent
42748752f6
commit
234c7f1ac1
@ -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
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user