On Mon, Oct 27, 2008 at 05:02:39PM -0700, David Daney wrote: > MIPS SMP code currently assumes that the boot CPU will be CPU0 > of the system. For some systems, this may not be the case. It always the logic CPU 0 though the physical number might be different. > diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c > index b79ea70..e2597ef 100644 > --- a/arch/mips/kernel/smp.c > +++ b/arch/mips/kernel/smp.c > @@ -195,12 +195,14 @@ void __init smp_prepare_cpus(unsigned int max_cpus) > /* preload SMP state for boot cpu */ > void __devinit smp_prepare_boot_cpu(void) > { > +#ifndef MIPS_DISABLE_BOOT_CPU_ZERO > /* > * This assumes that bootup is always handled by the processor > * with the logic and physical number 0. > */ > __cpu_number_map[0] = 0; > __cpu_logical_map[0] = 0; > +#endif This assignment is redundant anyway - the kernel is starting with the array zeroed. So just remove this entire initialization and do your array initialization in your mp_ops->smp_setup. And to tell another dirty secret - the arrays currently happen to be unused though we should use them at some point ... Ralf