diff options
Diffstat (limited to 'arch/mips/kernel/smp.c')
| -rw-r--r-- | arch/mips/kernel/smp.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 7b59cfb7e602..8bf88faf5afd 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
| @@ -163,8 +163,10 @@ static void stop_this_cpu(void *dummy) | |||
| 163 | * Remove this CPU: | 163 | * Remove this CPU: |
| 164 | */ | 164 | */ |
| 165 | cpu_clear(smp_processor_id(), cpu_online_map); | 165 | cpu_clear(smp_processor_id(), cpu_online_map); |
| 166 | local_irq_enable(); /* May need to service _machine_restart IPI */ | 166 | for (;;) { |
| 167 | for (;;); /* Wait if available. */ | 167 | if (cpu_wait) |
| 168 | (*cpu_wait)(); /* Wait if available. */ | ||
| 169 | } | ||
| 168 | } | 170 | } |
| 169 | 171 | ||
| 170 | void smp_send_stop(void) | 172 | void smp_send_stop(void) |
| @@ -193,12 +195,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 193 | /* preload SMP state for boot cpu */ | 195 | /* preload SMP state for boot cpu */ |
| 194 | void __devinit smp_prepare_boot_cpu(void) | 196 | void __devinit smp_prepare_boot_cpu(void) |
| 195 | { | 197 | { |
| 196 | /* | ||
| 197 | * This assumes that bootup is always handled by the processor | ||
| 198 | * with the logic and physical number 0. | ||
| 199 | */ | ||
| 200 | __cpu_number_map[0] = 0; | ||
| 201 | __cpu_logical_map[0] = 0; | ||
| 202 | cpu_set(0, phys_cpu_present_map); | 198 | cpu_set(0, phys_cpu_present_map); |
| 203 | cpu_set(0, cpu_online_map); | 199 | cpu_set(0, cpu_online_map); |
| 204 | cpu_set(0, cpu_callin_map); | 200 | cpu_set(0, cpu_callin_map); |
