aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/arch/powerpc/platforms/powernv/smp.c
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2014-06-11 15:59:28 +1000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-06-11 17:05:12 +1000
commitd4e58e5928f8c6c49228451dd03e0714cbab299a (patch)
tree34add9a16b4dbe03da04191f51588f3f6a6bdbf9 /arch/powerpc/platforms/powernv/smp.c
parentpowerpc/cpuidle: Only clear LPCR decrementer wakeup bit on fast sleep entry (diff)
downloadwireguard-linux-d4e58e5928f8c6c49228451dd03e0714cbab299a.tar.xz
wireguard-linux-d4e58e5928f8c6c49228451dd03e0714cbab299a.zip
powerpc/powernv: Enable POWER8 doorbell IPIs
This patch enables POWER8 doorbell IPIs on powernv. Since doorbells can only IPI within a core, we test to see when we can use doorbells and if not we fall back to XICS. This also enables hypervisor doorbells to wakeup us up from nap/sleep via the LPCR PECEDH bit. Based on tests by Anton, the best case IPI latency between two threads dropped from 894ns to 512ns. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv/smp.c')
-rw-r--r--arch/powerpc/platforms/powernv/smp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
index 0062a43a2e0d..5fcfcf44e3a9 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -32,6 +32,7 @@
#include <asm/opal.h>
#include <asm/runlatch.h>
#include <asm/code-patching.h>
+#include <asm/dbell.h>
#include "powernv.h"
@@ -46,6 +47,11 @@ static void pnv_smp_setup_cpu(int cpu)
{
if (cpu != boot_cpuid)
xics_setup_cpu();
+
+#ifdef CONFIG_PPC_DOORBELL
+ if (cpu_has_feature(CPU_FTR_DBELL))
+ doorbell_setup_this_cpu();
+#endif
}
int pnv_smp_kick_cpu(int nr)