diff options
Diffstat (limited to 'arch/sh/kernel')
| -rw-r--r-- | arch/sh/kernel/smp.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 3711a76a18e0..21e7f8a9f3e4 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
| @@ -125,10 +125,15 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
| 125 | struct task_struct *tsk; | 125 | struct task_struct *tsk; |
| 126 | unsigned long timeout; | 126 | unsigned long timeout; |
| 127 | 127 | ||
| 128 | tsk = fork_idle(cpu); | 128 | tsk = cpu_data[cpu].idle; |
| 129 | if (IS_ERR(tsk)) { | 129 | if (!tsk) { |
| 130 | printk(KERN_ERR "Failed forking idle task for cpu %d\n", cpu); | 130 | tsk = fork_idle(cpu); |
| 131 | return PTR_ERR(tsk); | 131 | if (IS_ERR(tsk)) { |
| 132 | pr_err("Failed forking idle task for cpu %d\n", cpu); | ||
| 133 | return PTR_ERR(tsk); | ||
| 134 | } | ||
| 135 | |||
| 136 | cpu_data[cpu].idle = tsk; | ||
| 132 | } | 137 | } |
| 133 | 138 | ||
| 134 | per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; | 139 | per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; |
