diff options
-rw-r--r-- | arch/sh/Kconfig | 1 | ||||
-rw-r--r-- | arch/sh/include/asm/processor.h | 4 | ||||
-rw-r--r-- | arch/sh/kernel/smp.c | 14 |
3 files changed, 2 insertions, 17 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index ff9e033ce626..244cfd0dbb7b 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -28,6 +28,7 @@ config SUPERH | |||
28 | select RTC_LIB | 28 | select RTC_LIB |
29 | select GENERIC_ATOMIC64 | 29 | select GENERIC_ATOMIC64 |
30 | select GENERIC_IRQ_SHOW | 30 | select GENERIC_IRQ_SHOW |
31 | select GENERIC_SMP_IDLE_THREAD | ||
31 | help | 32 | help |
32 | The SuperH is a RISC processor targeted for use in embedded systems | 33 | The SuperH is a RISC processor targeted for use in embedded systems |
33 | and consumer electronics; it was also used in the Sega Dreamcast | 34 | and consumer electronics; it was also used in the Sega Dreamcast |
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h index a229c393826a..6d87912415a7 100644 --- a/arch/sh/include/asm/processor.h +++ b/arch/sh/include/asm/processor.h | |||
@@ -85,10 +85,6 @@ struct sh_cpuinfo { | |||
85 | struct tlb_info itlb; | 85 | struct tlb_info itlb; |
86 | struct tlb_info dtlb; | 86 | struct tlb_info dtlb; |
87 | 87 | ||
88 | #ifdef CONFIG_SMP | ||
89 | struct task_struct *idle; | ||
90 | #endif | ||
91 | |||
92 | unsigned int phys_bits; | 88 | unsigned int phys_bits; |
93 | unsigned long flags; | 89 | unsigned long flags; |
94 | } __attribute__ ((aligned(L1_CACHE_BYTES))); | 90 | } __attribute__ ((aligned(L1_CACHE_BYTES))); |
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index ebb76e2a748b..b86e9ca79455 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -220,22 +220,10 @@ extern struct { | |||
220 | void *thread_info; | 220 | void *thread_info; |
221 | } stack_start; | 221 | } stack_start; |
222 | 222 | ||
223 | int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle) | 223 | int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tsk) |
224 | { | 224 | { |
225 | struct task_struct *tsk; | ||
226 | unsigned long timeout; | 225 | unsigned long timeout; |
227 | 226 | ||
228 | tsk = cpu_data[cpu].idle; | ||
229 | if (!tsk) { | ||
230 | tsk = fork_idle(cpu); | ||
231 | if (IS_ERR(tsk)) { | ||
232 | pr_err("Failed forking idle task for cpu %d\n", cpu); | ||
233 | return PTR_ERR(tsk); | ||
234 | } | ||
235 | |||
236 | cpu_data[cpu].idle = tsk; | ||
237 | } | ||
238 | |||
239 | per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; | 227 | per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; |
240 | 228 | ||
241 | /* Fill in data in head.S for secondary cpus */ | 229 | /* Fill in data in head.S for secondary cpus */ |