Convert cris to use the generic framework to boot secondary CPUs. Cc: Mikael Starvik <starvik@xxxxxxxx> Cc: Jesper Nilsson <jesper.nilsson@xxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Eric Dumazet <eric.dumazet@xxxxxxxxx> Cc: Mike Frysinger <vapier@xxxxxxxxxx> Cc: linux-cris-kernel@xxxxxxxx Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@xxxxxxxxxxxxxxxxxx> --- arch/cris/arch-v32/kernel/smp.c | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c index ebe2cb3..357114a 100644 --- a/arch/cris/arch-v32/kernel/smp.c +++ b/arch/cris/arch-v32/kernel/smp.c @@ -17,6 +17,7 @@ #include <linux/cpumask.h> #include <linux/interrupt.h> #include <linux/module.h> +#include <linux/smpboot.h> #define IPI_SCHEDULE 1 #define IPI_CALL 2 @@ -145,8 +146,11 @@ smp_boot_one_cpu(int cpuid, struct task_struct idle) * specific stuff such as the local timer and the MMU. */ void __init smp_callin(void) { - extern void cpu_idle(void); + smpboot_start_secondary(NULL); +} +void __cpuinit __cpu_pre_starting(void *unused) +{ int cpu = cpu_now_booting; reg_intr_vect_rw_mask vect_mask = {0}; @@ -161,16 +165,10 @@ void __init smp_callin(void) /* Setup local timer. */ cris_timer_init(); - /* Enable IRQ and idle */ + /* Enable IRQ */ REG_WR(intr_vect, irq_regs[cpu], rw_mask, vect_mask); crisv32_unmask_irq(IPI_INTR_VECT); crisv32_unmask_irq(TIMER0_INTR_VECT); - preempt_disable(); - notify_cpu_starting(cpu); - local_irq_enable(); - - set_cpu_online(cpu, true); - cpu_idle(); } /* Stop execution on this CPU.*/ -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html