powerpc/pmac/smp: Fixup smp_core99_cpu_disable() and use it on 64-bit
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 21 Feb 2011 05:31:49 +0000 (16:31 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 1 Apr 2011 04:37:20 +0000 (15:37 +1100)
Use the generic code, just add the MPIC priority setting,

I don't see any use in mucking around with the decrementer,
as 32-bit will have EE off all along, and 64-bit will be able
to deal with it.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/powermac/smp.c

index e0ac7bb77f294b5af37c8ba452296d3f69576b4c..eda47091329173e182e4314e234c731199503111 100644 (file)
@@ -867,16 +867,14 @@ static void __devinit smp_core99_setup_cpu(int cpu_nr)
 
 #if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PPC32)
 
-int smp_core99_cpu_disable(void)
+static int smp_core99_cpu_disable(void)
 {
-       set_cpu_online(smp_processor_id(), false);
+       int rc = generic_cpu_disable();
+       if (rc)
+               return rc;
 
-       /* XXX reset cpu affinity here */
        mpic_cpu_set_priority(0xf);
-       asm volatile("mtdec %0" : : "r" (0x7fffffff));
-       mb();
-       udelay(20);
-       asm volatile("mtdec %0" : : "r" (0x7fffffff));
+
        return 0;
 }
 
@@ -902,12 +900,7 @@ struct smp_ops_t core99_smp_ops = {
        .give_timebase  = smp_core99_give_timebase,
        .take_timebase  = smp_core99_take_timebase,
 #if defined(CONFIG_HOTPLUG_CPU)
-# if defined(CONFIG_PPC32)
        .cpu_disable    = smp_core99_cpu_disable,
-# endif
-# if defined(CONFIG_PPC64)
-       .cpu_disable    = generic_cpu_disable,
-# endif
        .cpu_die        = generic_cpu_die,
 #endif
 };