diff options
Diffstat (limited to 'arch/powerpc/platforms/powernv/smp.c')
-rw-r--r-- | arch/powerpc/platforms/powernv/smp.c | 27 |
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 | ||
286 | static 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 | |||
303 | static void __init pnv_smp_probe(void) | 286 | static 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 | ||