Message ID | 4FC945C1.2000004@linux.vnet.ibm.com |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> Date: Sat, 02 Jun 2012 04:14:17 +0530 > From: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com> > > Convert sparc64 to use the generic framework to boot secondary CPUs. > > Notes: > Remove the calls to cpu_idle() from assembly files because we will invoke > cpu_idle() in generic code. > > Signed-off-by: Nikunj A. Dadhania <nikunj@linux.vnet.ibm.com> > Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> Acked-by: David S. Miller <davem@davemloft.net> -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/sparc/kernel/hvtramp.S b/arch/sparc/kernel/hvtramp.S index 9365432..e1a45cf 100644 --- a/arch/sparc/kernel/hvtramp.S +++ b/arch/sparc/kernel/hvtramp.S @@ -128,8 +128,6 @@ hv_cpu_startup: call smp_callin nop - call cpu_idle - mov 0, %o0 call cpu_panic nop diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 781bcb1..3c45538 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -25,6 +25,7 @@ #include <linux/ftrace.h> #include <linux/cpu.h> #include <linux/slab.h> +#include <linux/smpboot.h> #include <asm/head.h> #include <asm/ptrace.h> @@ -89,6 +90,11 @@ static volatile unsigned long callin_flag = 0; void __cpuinit smp_callin(void) { + smpboot_start_secondary(NULL); +} + +void __cpuinit __cpu_pre_starting(void *unused) +{ int cpuid = hard_smp_processor_id(); __local_per_cpu_offset = __per_cpu_offset(cpuid); @@ -115,18 +121,14 @@ void __cpuinit smp_callin(void) /* Attach to the address space of init_task. */ atomic_inc(&init_mm.mm_count); current->active_mm = &init_mm; +} - /* inform the notifiers about the new cpu */ - notify_cpu_starting(cpuid); +void __cpuinit __cpu_pre_online(void *unused) +{ + unsigned int cpuid = hard_smp_processor_id(); while (!cpumask_test_cpu(cpuid, &smp_commenced_mask)) rmb(); - - set_cpu_online(cpuid, true); - local_irq_enable(); - - /* idle thread is expected to have preempt disabled */ - preempt_disable(); } void cpu_panic(void) diff --git a/arch/sparc/kernel/trampoline_64.S b/arch/sparc/kernel/trampoline_64.S index da1b781..6171126 100644 --- a/arch/sparc/kernel/trampoline_64.S +++ b/arch/sparc/kernel/trampoline_64.S @@ -407,8 +407,6 @@ after_lock_tlb: call smp_callin nop - call cpu_idle - mov 0, %o0 call cpu_panic nop 1: b,a,pt %xcc, 1b