aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel/smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel/smp.c')
-rw-r--r--arch/parisc/kernel/smp.c25
1 files changed, 3 insertions, 22 deletions
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index 4dc7b7942b4c..a47828d31fe6 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -340,26 +340,11 @@ void __init smp_callin(void)
340/* 340/*
341 * Bring one cpu online. 341 * Bring one cpu online.
342 */ 342 */
343int __cpuinit smp_boot_one_cpu(int cpuid) 343int __cpuinit smp_boot_one_cpu(int cpuid, struct task_struct *idle)
344{ 344{
345 const struct cpuinfo_parisc *p = &per_cpu(cpu_data, cpuid); 345 const struct cpuinfo_parisc *p = &per_cpu(cpu_data, cpuid);
346 struct task_struct *idle;
347 long timeout; 346 long timeout;
348 347
349 /*
350 * Create an idle task for this CPU. Note the address wed* give
351 * to kernel_thread is irrelevant -- it's going to start
352 * where OS_BOOT_RENDEVZ vector in SAL says to start. But
353 * this gets all the other task-y sort of data structures set
354 * up like we wish. We need to pull the just created idle task
355 * off the run queue and stuff it into the init_tasks[] array.
356 * Sheesh . . .
357 */
358
359 idle = fork_idle(cpuid);
360 if (IS_ERR(idle))
361 panic("SMP: fork failed for CPU:%d", cpuid);
362
363 task_thread_info(idle)->cpu = cpuid; 348 task_thread_info(idle)->cpu = cpuid;
364 349
365 /* Let _start know what logical CPU we're booting 350 /* Let _start know what logical CPU we're booting
@@ -403,10 +388,6 @@ int __cpuinit smp_boot_one_cpu(int cpuid)
403 udelay(100); 388 udelay(100);
404 barrier(); 389 barrier();
405 } 390 }
406
407 put_task_struct(idle);
408 idle = NULL;
409
410 printk(KERN_CRIT "SMP: CPU:%d is stuck.\n", cpuid); 391 printk(KERN_CRIT "SMP: CPU:%d is stuck.\n", cpuid);
411 return -1; 392 return -1;
412 393
@@ -455,10 +436,10 @@ void smp_cpus_done(unsigned int cpu_max)
455} 436}
456 437
457 438
458int __cpuinit __cpu_up(unsigned int cpu) 439int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle)
459{ 440{
460 if (cpu != 0 && cpu < parisc_max_cpus) 441 if (cpu != 0 && cpu < parisc_max_cpus)
461 smp_boot_one_cpu(cpu); 442 smp_boot_one_cpu(cpu, tidle);
462 443
463 return cpu_online(cpu) ? 0 : -ENOSYS; 444 return cpu_online(cpu) ? 0 : -ENOSYS;
464} 445}