powerpc/85xx: Set up doorbells even with no mpic
authorScott Wood <scottwood@freescale.com>
Thu, 26 Aug 2010 07:49:07 +0000 (02:49 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Thu, 23 Jun 2011 02:44:54 +0000 (21:44 -0500)
In cases like when the platform is used under hypervisor we will NOT
have an MPIC controller but still want doorbells setup.

Signed-off-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/platforms/85xx/smp.c

index 8eef8d2b44727022ea77578f292b417eeb7cb224..f5aa6190bba2627494f46bdc92866d37b20cbb5d 100644 (file)
@@ -111,14 +111,6 @@ smp_85xx_kick_cpu(int nr)
        return 0;
 }
 
-static void __init
-smp_85xx_setup_cpu(int cpu_nr)
-{
-       mpic_setup_this_cpu();
-       if (cpu_has_feature(CPU_FTR_DBELL))
-               doorbell_setup_this_cpu();
-}
-
 struct smp_ops_t smp_85xx_ops = {
        .kick_cpu = smp_85xx_kick_cpu,
 #ifdef CONFIG_KEXEC
@@ -224,14 +216,25 @@ static void mpc85xx_smp_machine_kexec(struct kimage *image)
 }
 #endif /* CONFIG_KEXEC */
 
+static void __init
+smp_85xx_setup_cpu(int cpu_nr)
+{
+       if (smp_85xx_ops.probe == smp_mpic_probe)
+               mpic_setup_this_cpu();
+
+       if (cpu_has_feature(CPU_FTR_DBELL))
+               doorbell_setup_this_cpu();
+}
+
 void __init mpc85xx_smp_init(void)
 {
        struct device_node *np;
 
+       smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu;
+
        np = of_find_node_by_type(NULL, "open-pic");
        if (np) {
                smp_85xx_ops.probe = smp_mpic_probe;
-               smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu;
                smp_85xx_ops.message_pass = smp_mpic_message_pass;
        }