aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r--arch/parisc/kernel/smp.c23
1 files changed, 2 insertions, 21 deletions
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index eae8cd808f07..f64f381b4d82 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -334,26 +334,11 @@ void __init smp_callin(void)
334/* 334/*
335 * Bring one cpu online. 335 * Bring one cpu online.
336 */ 336 */
337int __cpuinit smp_boot_one_cpu(int cpuid) 337int __cpuinit smp_boot_one_cpu(int cpuid, struct task_struct *idle)
338{ 338{
339 const struct cpuinfo_parisc *p = &per_cpu(cpu_data, cpuid); 339 const struct cpuinfo_parisc *p = &per_cpu(cpu_data, cpuid);
340 struct task_struct *idle;
341 long timeout; 340 long timeout;
342 341
343 /*
344 * Create an idle task for this CPU. Note the address wed* give
345 * to kernel_thread is irrelevant -- it's going to start
346 * where OS_BOOT_RENDEVZ vector in SAL says to start. But
347 * this gets all the other task-y sort of data structures set
348 * up like we wish. We need to pull the just created idle task
349 * off the run queue and stuff it into the init_tasks[] array.
350 * Sheesh . . .
351 */
352
353 idle = fork_idle(cpuid);
354 if (IS_ERR(idle))
355 panic("SMP: fork failed for CPU:%d", cpuid);
356
357 task_thread_info(idle)->cpu = cpuid; 342 task_thread_info(idle)->cpu = cpuid;
358 343
359 /* Let _start know what logical CPU we're booting 344 /* Let _start know what logical CPU we're booting
@@ -397,10 +382,6 @@ int __cpuinit smp_boot_one_cpu(int cpuid)
397 udelay(100); 382 udelay(100);
398 barrier(); 383 barrier();
399 } 384 }
400
401 put_task_struct(idle);
402 idle = NULL;
403
404 printk(KERN_CRIT "SMP: CPU:%d is stuck.\n", cpuid); 385 printk(KERN_CRIT "SMP: CPU:%d is stuck.\n", cpuid);
405 return -1; 386 return -1;
406 387
@@ -452,7 +433,7 @@ void smp_cpus_done(unsigned int cpu_max)
452int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle) 433int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)
453{ 434{
454 if (cpu != 0 && cpu < parisc_max_cpus) 435 if (cpu != 0 && cpu < parisc_max_cpus)
455 smp_boot_one_cpu(cpu); 436 smp_boot_one_cpu(cpu, tidle);
456 437
457 return cpu_online(cpu) ? 0 : -ENOSYS; 438 return cpu_online(cpu) ? 0 : -ENOSYS;
458} 439}