[PATCH] Fix per-cpu allocation on oldworld SMP powermacs

Benjamin Herrenschmidt benh at kernel.crashing.org
Fri Jun 8 08:26:02 EST 2007


On Thu, 2007-06-07 at 22:42 +1000, Paul Mackerras wrote:
> diff --git a/arch/powerpc/platforms/powermac/setup.c
> b/arch/powerpc/platforms/powermac/setup.c
> index 07b1c4e..c519b2a 100644
> --- a/arch/powerpc/platforms/powermac/setup.c
> +++ b/arch/powerpc/platforms/powermac/setup.c
> @@ -363,8 +363,19 @@ static void __init pmac_setup_arch(void)
>                 smp_ops = &core99_smp_ops;
>         }
>  #ifdef CONFIG_PPC32
> -       else
> +       else {
> +               /*
> +                * We have to set bits in cpu_possible_map here since
> the
> +                * secondary CPU(s) aren't in the device tree, and
> +                * setup_per_cpu_areas only allocates per-cpu data for
> +                * CPUs in the cpu_possible_map.
> +                */
> +               int cpu;
> +
> +               for (cpu = 1; cpu < 4 && cpu < NR_CPUS; ++cpu)
> +                       cpu_set(cpu, cpu_possible_map);
>                 smp_ops = &psurge_smp_ops;
> +       }
>  #endif
>  #endif /* CONFIG_SMP */ 

Why not use the result from probe() instead which returns the number of
possible CPUs ? That would catch more than just the powermac case ... we
might have similar issues when finally porting PReP over...

Ben.




More information about the Linuxppc-dev mailing list