POWER9 hypervisors will not necessarily run guest threads together on
the same core at the same time, so msgsndp should not be used.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/platforms/pseries/smp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/platforms/pseries/smp.c 
b/arch/powerpc/platforms/pseries/smp.c
index f6f83aeccaaa..1fa08155206b 100644
--- a/arch/powerpc/platforms/pseries/smp.c
+++ b/arch/powerpc/platforms/pseries/smp.c
@@ -200,7 +200,12 @@ static __init void pSeries_smp_probe(void)
 {
        xics_smp_probe();
 
-       if (cpu_has_feature(CPU_FTR_DBELL)) {
+       /*
+        * POWER9 can not use msgsndp doorbells for IPI because thread
+        * siblings do not necessarily run on physical cores at the same
+        * time. This could be enabled for pHyp.
+        */
+       if (cpu_has_feature(CPU_FTR_DBELL) && 
!cpu_has_feature(CPU_FTR_ARCH_300)) {
                xics_cause_ipi = smp_ops->cause_ipi;
                smp_ops->cause_ipi = pSeries_cause_ipi_mux;
        }
-- 
2.11.0

Reply via email to