diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2012-04-20 09:05:56 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2012-04-26 06:06:13 -0400 |
commit | 9a1347237492f273f84ec39962b5806c70b2806a (patch) | |
tree | a35cc5ce4d43c307784620d2c409c943a954cd4c /arch/parisc/kernel | |
parent | f0a2bc7e54bb51f64d4c2cd5942ba6018a13d762 (diff) |
parisc: Use generic idle thread allocation
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Cc: James E.J. Bottomley <jejb@parisc-linux.org>
Link: http://lkml.kernel.org/r/20120420124557.988947805@linutronix.de
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r-- | arch/parisc/kernel/smp.c | 23 |
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 | */ |
337 | int __cpuinit smp_boot_one_cpu(int cpuid) | 337 | int __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) | |||
452 | int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle) | 433 | int __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 | } |