Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c63c4faa8cf055319c7ed557d2050c1c3776fac5
Commit:     c63c4faa8cf055319c7ed557d2050c1c3776fac5
Parent:     eedab661a51966c454e38c17266a531aa58b4a98
Author:     Paul Mackerras <[EMAIL PROTECTED]>
AuthorDate: Thu Jun 7 22:42:19 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Thu Jun 14 11:56:17 2007 +1000

    [POWERPC] Fix per-cpu allocation on oldworld SMP powermacs
    
    The per-cpu area(a) for the secondary CPU(s) isn't getting allocated
    on old SMP powermacs that don't have the secondary CPU(s) listed in
    the device tree, as per-cpu areas are now only allocated for CPUs in
    the cpu_possible_map, and we aren't setting the bits for the secondary
    CPU(s) until smp_prepare_cpus(), which is after per-cpu allocation.
    Therefore this sets the bits for CPUs 1..3 in cpu_possible_map in
    pmac_setup_arch, so they get per-cpu data allocated.
    
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/powermac/setup.c |   13 ++++++++++++-
 arch/powerpc/platforms/powermac/smp.c   |    1 -
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/platforms/powermac/setup.c 
b/arch/powerpc/platforms/powermac/setup.c
index 07b1c4e..9565715 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 */
 
diff --git a/arch/powerpc/platforms/powermac/smp.c 
b/arch/powerpc/platforms/powermac/smp.c
index 686ed82..cb2d894 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -317,7 +317,6 @@ static int __init smp_psurge_probe(void)
                ncpus = NR_CPUS;
        for (i = 1; i < ncpus ; ++i) {
                cpu_set(i, cpu_present_map);
-               cpu_set(i, cpu_possible_map);
                set_hard_smp_processor_id(i, i);
        }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to