diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2006-02-23 07:23:27 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-02-27 12:30:36 -0500 |
commit | 9b6695a8adfe0916e81ddd810a5b9db3eb8b0e46 (patch) | |
tree | 62ba9475530c88ccf2149cd58eabd97ebe096aca /arch/mips/kernel/setup.c | |
parent | 3e6cb2d38a9c9758170813497a860c64543643d5 (diff) |
[MIPS] SMP: Fix initialization order bug.
A recent change requires cpu_possible_map to be initialized before
smp_sched_init() but most MIPS platforms were initializing their
processors in the prom_prepare_cpus callback of smp_prepare_cpus. The
simple fix of calling prom_prepare_cpus from one of the earlier SMP
initialization hooks doesn't work well either since IPIs may require
init_IRQ() to have completed, so bit the bullet and split
prom_prepare_cpus into two initialization functions, plat_smp_setup
which is called early from setup_arch and plat_prepare_cpus called where
prom_prepare_cpus used to be called.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/setup.c')
-rw-r--r-- | arch/mips/kernel/setup.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index d86affa21278..d9293c558e41 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -540,6 +540,9 @@ void __init setup_arch(char **cmdline_p) | |||
540 | sparse_init(); | 540 | sparse_init(); |
541 | paging_init(); | 541 | paging_init(); |
542 | resource_init(); | 542 | resource_init(); |
543 | #ifdef CONFIG_SMP | ||
544 | plat_smp_setup(); | ||
545 | #endif | ||
543 | } | 546 | } |
544 | 547 | ||
545 | int __init fpu_disable(char *s) | 548 | int __init fpu_disable(char *s) |