summary refs log tree commit diff
path: root/arch/powerpc/kernel/setup_64.c
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2014-03-11 11:54:06 +1100
committerAnton Blanchard <anton@samba.org>2014-04-23 10:05:26 +1000
commit2751b628c97e66e61f482935ca59148751972941 (patch)
tree86ef576395f448da30512daea224c1f1bf258807 /arch/powerpc/kernel/setup_64.c
parentd51959d70ffc55d1c829e881a6121e6fbbfb29af (diff)
downloadlinux-2751b628c97e66e61f482935ca59148751972941.tar.gz
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/kernel/setup_64.c')
-rw-r--r--arch/powerpc/kernel/setup_64.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index fbe24377eda3..90b532ace0d5 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -341,7 +341,7 @@ void smp_release_cpus(void)
 
 	ptr  = (unsigned long *)((unsigned long)&__secondary_hold_spinloop
 			- PHYSICAL_START);
-	*ptr = __pa(generic_secondary_smp_init);
+	*ptr = ppc_function_entry(generic_secondary_smp_init);
 
 	/* And wait a bit for them to catch up */
 	for (i = 0; i < 100000; i++) {