Paul,

Le 23/05/2019 à 08:14, Paul Mackerras a écrit :
On Tue, Apr 30, 2019 at 12:39:03PM +0000, Christophe Leroy wrote:
This patch implements a fast entry for syscalls.

Syscalls don't have to preserve non volatile registers except LR.

This patch then implement a fast entry for syscalls, where
volatile registers get clobbered.

As this entry is dedicated to syscall it always sets MSR_EE
and warns in case MSR_EE was previously off

It also assumes that the call is always from user, system calls are
unexpected from kernel.

This is now upstream as commit 1a4b739bbb4f.  On the e500mc test
config that I use, I'm getting this build failure:

arch/powerpc/kernel/head_fsl_booke.o: In function `SystemCall':
arch/powerpc/kernel/head_fsl_booke.S:416: undefined reference to 
`kvmppc_handler_BOOKE_INTERRUPT_SYSCALL_SPRN_SRR1'
Makefile:1052: recipe for target 'vmlinux' failed

Does my patch (https://patchwork.ozlabs.org/patch/1103909/) fixes the issue for you ?

Thanks
Christophe


+.macro SYSCALL_ENTRY trapno intno
+       mfspr   r10, SPRN_SPRG_THREAD
+#ifdef CONFIG_KVM_BOOKE_HV
+BEGIN_FTR_SECTION
+       mtspr   SPRN_SPRG_WSCRATCH0, r10
+       stw     r11, THREAD_NORMSAVE(0)(r10)
+       stw     r13, THREAD_NORMSAVE(2)(r10)
+       mfcr    r13                     /* save CR in r13 for now          */
+       mfspr   r11, SPRN_SRR1
+       mtocrf  0x80, r11       /* check MSR[GS] without clobbering reg */
+       bf      3, 1975f
+       b       kvmppc_handler_BOOKE_INTERRUPT_\intno\()_SPRN_SRR1

It seems to me that the "_SPRN_SRR1" on the end of this line
isn't meant to be there...  However, it still fails to link with that
removed.

Paul.

Reply via email to