| Submitter | Srivatsa S. Bhat |
|---|---|
| Date | June 1, 2012, 9:14 a.m. |
| Message ID | <20120601091449.31979.67743.stgit@srivatsabhat.in.ibm.com> |
| Download | mbox | patch |
| Permalink | /patch/162297/ |
| State | Not Applicable |
| Delegated to: | David Miller |
| Headers | show |
Comments
From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com> Date: Fri, 01 Jun 2012 14:44:54 +0530 > - call cpu_idle > mov 0, %o0 ... > - call cpu_idle > mov 0, %o0 The 'mov' has to be removed too, it's in the delay slot of the call instruction and is passing in the first argument. -- 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
Patch
diff --git a/arch/sparc/kernel/hvtramp.S b/arch/sparc/kernel/hvtramp.S index 9365432..3eb7e0b 100644 --- a/arch/sparc/kernel/hvtramp.S +++ b/arch/sparc/kernel/hvtramp.S @@ -128,7 +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..379b464 100644 --- a/arch/sparc/kernel/trampoline_64.S +++ b/arch/sparc/kernel/trampoline_64.S @@ -407,7 +407,6 @@ after_lock_tlb: call smp_callin nop - call cpu_idle mov 0, %o0 call cpu_panic nop