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/

Reply via email to