diff options
-rw-r--r-- | arch/powerpc/kernel/smp.c | 10 | ||||
-rw-r--r-- | arch/powerpc/platforms/85xx/smp.c | 10 |
2 files changed, 7 insertions, 13 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 96f107cc0160..d387b3937ccc 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -269,7 +269,10 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
269 | cpu_callin_map[boot_cpuid] = 1; | 269 | cpu_callin_map[boot_cpuid] = 1; |
270 | 270 | ||
271 | if (smp_ops) | 271 | if (smp_ops) |
272 | max_cpus = smp_ops->probe(); | 272 | if (smp_ops->probe) |
273 | max_cpus = smp_ops->probe(); | ||
274 | else | ||
275 | max_cpus = NR_CPUS; | ||
273 | else | 276 | else |
274 | max_cpus = 1; | 277 | max_cpus = 1; |
275 | 278 | ||
@@ -493,7 +496,8 @@ int __devinit start_secondary(void *unused) | |||
493 | preempt_disable(); | 496 | preempt_disable(); |
494 | cpu_callin_map[cpu] = 1; | 497 | cpu_callin_map[cpu] = 1; |
495 | 498 | ||
496 | smp_ops->setup_cpu(cpu); | 499 | if (smp_ops->setup_cpu) |
500 | smp_ops->setup_cpu(cpu); | ||
497 | if (smp_ops->take_timebase) | 501 | if (smp_ops->take_timebase) |
498 | smp_ops->take_timebase(); | 502 | smp_ops->take_timebase(); |
499 | 503 | ||
@@ -556,7 +560,7 @@ void __init smp_cpus_done(unsigned int max_cpus) | |||
556 | old_mask = current->cpus_allowed; | 560 | old_mask = current->cpus_allowed; |
557 | set_cpus_allowed(current, cpumask_of_cpu(boot_cpuid)); | 561 | set_cpus_allowed(current, cpumask_of_cpu(boot_cpuid)); |
558 | 562 | ||
559 | if (smp_ops) | 563 | if (smp_ops && smp_ops->setup_cpu) |
560 | smp_ops->setup_cpu(boot_cpuid); | 564 | smp_ops->setup_cpu(boot_cpuid); |
561 | 565 | ||
562 | set_cpus_allowed(current, old_mask); | 566 | set_cpus_allowed(current, old_mask); |
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c index 94f901da4918..04160a4cc699 100644 --- a/arch/powerpc/platforms/85xx/smp.c +++ b/arch/powerpc/platforms/85xx/smp.c | |||
@@ -88,25 +88,15 @@ struct smp_ops_t smp_85xx_ops = { | |||
88 | .kick_cpu = smp_85xx_kick_cpu, | 88 | .kick_cpu = smp_85xx_kick_cpu, |
89 | }; | 89 | }; |
90 | 90 | ||
91 | static int __init smp_dummy_probe(void) | ||
92 | { | ||
93 | return NR_CPUS; | ||
94 | } | ||
95 | |||
96 | void __init mpc85xx_smp_init(void) | 91 | void __init mpc85xx_smp_init(void) |
97 | { | 92 | { |
98 | struct device_node *np; | 93 | struct device_node *np; |
99 | 94 | ||
100 | smp_85xx_ops.message_pass = NULL; | ||
101 | |||
102 | np = of_find_node_by_type(NULL, "open-pic"); | 95 | np = of_find_node_by_type(NULL, "open-pic"); |
103 | if (np) { | 96 | if (np) { |
104 | smp_85xx_ops.probe = smp_mpic_probe; | 97 | smp_85xx_ops.probe = smp_mpic_probe; |
105 | smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu; | 98 | smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu; |
106 | smp_85xx_ops.message_pass = smp_mpic_message_pass; | 99 | smp_85xx_ops.message_pass = smp_mpic_message_pass; |
107 | } else { | ||
108 | smp_85xx_ops.probe = smp_dummy_probe; | ||
109 | smp_85xx_ops.setup_cpu = smp_85xx_basic_setup; | ||
110 | } | 100 | } |
111 | 101 | ||
112 | if (cpu_has_feature(CPU_FTR_DBELL)) | 102 | if (cpu_has_feature(CPU_FTR_DBELL)) |