[PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread
Copied from commit 89bbe4c798bc ("powerpc/64: indirect function call use bctrl rather than blrl in ret_from_kernel_thread") blrl is not recommended to use as an indirect function call, as it may corrupt the link stack predictor. This is not a performance critical path but this should be fixed for consistency. Signed-off-by: Christophe Leroy --- arch/powerpc/kernel/entry_32.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 0273a1349006..61fdd53cdd9a 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S @@ -161,10 +161,10 @@ ret_from_fork: ret_from_kernel_thread: REST_NVGPRS(r1) bl schedule_tail - mtlrr14 + mtctr r14 mr r3,r15 PPC440EP_ERR42 - blrl + bctrl li r3,0 b ret_from_syscall -- 2.25.0
Re: [PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread
Christophe Leroy writes: > Copied from commit 89bbe4c798bc ("powerpc/64: indirect function call > use bctrl rather than blrl in ret_from_kernel_thread") > > blrl is not recommended to use as an indirect function call, as it may > corrupt the link stack predictor. Do we know if any 32-bit CPUs have a link stack predictor or similar? cheers > This is not a performance critical path but this should be fixed for > consistency. > > Signed-off-by: Christophe Leroy > --- > arch/powerpc/kernel/entry_32.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S > index 0273a1349006..61fdd53cdd9a 100644 > --- a/arch/powerpc/kernel/entry_32.S > +++ b/arch/powerpc/kernel/entry_32.S > @@ -161,10 +161,10 @@ ret_from_fork: > ret_from_kernel_thread: > REST_NVGPRS(r1) > bl schedule_tail > - mtlrr14 > + mtctr r14 > mr r3,r15 > PPC440EP_ERR42 > - blrl > + bctrl > li r3,0 > b ret_from_syscall > > -- > 2.25.0
Re: [PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread
On Fri, Aug 20, 2021 at 10:15:11PM +1000, Michael Ellerman wrote: > Christophe Leroy writes: > > Copied from commit 89bbe4c798bc ("powerpc/64: indirect function call > > use bctrl rather than blrl in ret_from_kernel_thread") > > > > blrl is not recommended to use as an indirect function call, as it may > > corrupt the link stack predictor. > > Do we know if any 32-bit CPUs have a link stack predictor or similar? 74xx do. Segher
Re: [PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread
On Fri, Aug 20, 2021 at 12:18:45PM -0500, Segher Boessenkool wrote: > On Fri, Aug 20, 2021 at 10:15:11PM +1000, Michael Ellerman wrote: > > Christophe Leroy writes: > > > Copied from commit 89bbe4c798bc ("powerpc/64: indirect function call > > > use bctrl rather than blrl in ret_from_kernel_thread") > > > > > > blrl is not recommended to use as an indirect function call, as it may > > > corrupt the link stack predictor. > > > > Do we know if any 32-bit CPUs have a link stack predictor or similar? > > 74xx do. 7450 and later, that is. Will I ever get that right, sigh. Segher
Re: [PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread
On Fri, 20 Aug 2021 05:16:05 + (UTC), Christophe Leroy wrote: > Copied from commit 89bbe4c798bc ("powerpc/64: indirect function call > use bctrl rather than blrl in ret_from_kernel_thread") > > blrl is not recommended to use as an indirect function call, as it may > corrupt the link stack predictor. > > This is not a performance critical path but this should be fixed for > consistency. > > [...] Applied to powerpc/next. [1/1] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread https://git.kernel.org/powerpc/c/113ec9ccc8049c3772f0eab46b62c5d6654c09f7 cheers