aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2014-03-10 20:54:06 -0400
committerAnton Blanchard <anton@samba.org>2014-04-22 20:05:26 -0400
commit2751b628c97e66e61f482935ca59148751972941 (patch)
tree86ef576395f448da30512daea224c1f1bf258807 /arch/powerpc/platforms/powernv
parentd51959d70ffc55d1c829e881a6121e6fbbfb29af (diff)
powerpc: Fix SMP issues with ppc64le ABIv2
There is no need to put a function descriptor in __secondary_hold_spinloop. Use ppc_function_entry to get the instruction address and put it in __secondary_hold_spinloop instead. Also fix an issue where we assumed cur_cpu_spec held a function descriptor. Signed-off-by: Anton Blanchard <anton@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv')
-rw-r--r--arch/powerpc/platforms/powernv/smp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
index 908672bdcea6..b370b86263a6 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -30,6 +30,7 @@
30#include <asm/cputhreads.h> 30#include <asm/cputhreads.h>
31#include <asm/xics.h> 31#include <asm/xics.h>
32#include <asm/opal.h> 32#include <asm/opal.h>
33#include <asm/code-patching.h>
33 34
34#include "powernv.h" 35#include "powernv.h"
35 36
@@ -49,8 +50,8 @@ static void pnv_smp_setup_cpu(int cpu)
49int pnv_smp_kick_cpu(int nr) 50int pnv_smp_kick_cpu(int nr)
50{ 51{
51 unsigned int pcpu = get_hard_smp_processor_id(nr); 52 unsigned int pcpu = get_hard_smp_processor_id(nr);
52 unsigned long start_here = __pa(*((unsigned long *) 53 unsigned long start_here =
53 generic_secondary_smp_init)); 54 __pa(ppc_function_entry(generic_secondary_smp_init));
54 long rc; 55 long rc;
55 56
56 BUG_ON(nr < 0 || nr >= NR_CPUS); 57 BUG_ON(nr < 0 || nr >= NR_CPUS);