On 07/01/2013 09:34 PM, James Hogan wrote: > 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 <tk...@yandex.ru> > Signed-off-by: James Hogan <james.ho...@imgtec.com> > Cc: Kirill Tkhai <tk...@yandex.ru> > Cc: "Srivatsa S. Bhat" <srivatsa.b...@linux.vnet.ibm.com> > Cc: Thomas Gleixner <t...@linutronix.de> > ---
Reviewed-by: Srivatsa S. Bhat <srivatsa.b...@linux.vnet.ibm.com> Regards, Srivatsa S. Bhat > arch/metag/kernel/smp.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/arch/metag/kernel/smp.c b/arch/metag/kernel/smp.c > index b813515..09979f2 100644 > --- a/arch/metag/kernel/smp.c > +++ b/arch/metag/kernel/smp.c > @@ -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]); > @@ -398,6 +393,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 > */ > cpu_startup_entry(CPUHP_ONLINE); > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/