aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/powernv/smp.c')
-rw-r--r--arch/powerpc/platforms/powernv/smp.c27
1 files changed, 3 insertions, 24 deletions
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
index b80909957792..0d354e19ef92 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -283,23 +283,6 @@ static void pnv_cause_ipi(int cpu)
283 ic_cause_ipi(cpu); 283 ic_cause_ipi(cpu);
284} 284}
285 285
286static void pnv_p9_dd1_cause_ipi(int cpu)
287{
288 int this_cpu = get_cpu();
289
290 /*
291 * POWER9 DD1 has a global addressed msgsnd, but for now we restrict
292 * IPIs to same core, because it requires additional synchronization
293 * for inter-core doorbells which we do not implement.
294 */
295 if (cpumask_test_cpu(cpu, cpu_sibling_mask(this_cpu)))
296 doorbell_global_ipi(cpu);
297 else
298 ic_cause_ipi(cpu);
299
300 put_cpu();
301}
302
303static void __init pnv_smp_probe(void) 286static void __init pnv_smp_probe(void)
304{ 287{
305 if (xive_enabled()) 288 if (xive_enabled())
@@ -311,14 +294,10 @@ static void __init pnv_smp_probe(void)
311 ic_cause_ipi = smp_ops->cause_ipi; 294 ic_cause_ipi = smp_ops->cause_ipi;
312 WARN_ON(!ic_cause_ipi); 295 WARN_ON(!ic_cause_ipi);
313 296
314 if (cpu_has_feature(CPU_FTR_ARCH_300)) { 297 if (cpu_has_feature(CPU_FTR_ARCH_300))
315 if (cpu_has_feature(CPU_FTR_POWER9_DD1)) 298 smp_ops->cause_ipi = doorbell_global_ipi;
316 smp_ops->cause_ipi = pnv_p9_dd1_cause_ipi; 299 else
317 else
318 smp_ops->cause_ipi = doorbell_global_ipi;
319 } else {
320 smp_ops->cause_ipi = pnv_cause_ipi; 300 smp_ops->cause_ipi = pnv_cause_ipi;
321 }
322 } 301 }
323} 302}
324 303