powerpc/85xx: Set up doorbells even with no mpic
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>
This commit is contained in:
@@ -111,14 +111,6 @@ smp_85xx_kick_cpu(int nr)
|
|||||||
return 0;
|
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 = {
|
struct smp_ops_t smp_85xx_ops = {
|
||||||
.kick_cpu = smp_85xx_kick_cpu,
|
.kick_cpu = smp_85xx_kick_cpu,
|
||||||
#ifdef CONFIG_KEXEC
|
#ifdef CONFIG_KEXEC
|
||||||
@@ -224,14 +216,25 @@ static void mpc85xx_smp_machine_kexec(struct kimage *image)
|
|||||||
}
|
}
|
||||||
#endif /* CONFIG_KEXEC */
|
#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)
|
void __init mpc85xx_smp_init(void)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
|
|
||||||
|
smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu;
|
||||||
|
|
||||||
np = of_find_node_by_type(NULL, "open-pic");
|
np = of_find_node_by_type(NULL, "open-pic");
|
||||||
if (np) {
|
if (np) {
|
||||||
smp_85xx_ops.probe = smp_mpic_probe;
|
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;
|
smp_85xx_ops.message_pass = smp_mpic_message_pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user