[PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE1810d LANDED

Landed in mainline as 113ec9ccc804 on 2021-08-25.

5 messages, 4 authors, 2021-08-27 · open the first message on its own page

[PATCH] powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread

From: Christophe Leroy <hidden>
Date: 2021-08-20 05:16:14

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 <redacted>
---
 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
-	mtlr	r14
+	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

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2021-08-20 12:15:19

Christophe Leroy [off-list ref] 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
quoted hunk
This is not a performance critical path but this should be fixed for
consistency.

Signed-off-by: Christophe Leroy <redacted>
---
 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
-	mtlr	r14
+	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

From: Segher Boessenkool <hidden>
Date: 2021-08-20 17:24:25

On Fri, Aug 20, 2021 at 10:15:11PM +1000, Michael Ellerman wrote:
Christophe Leroy [off-list ref] writes:
quoted
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

From: Segher Boessenkool <hidden>
Date: 2021-08-20 18:17:17

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:
quoted
Christophe Leroy [off-list ref] writes:
quoted
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

From: Michael Ellerman <hidden>
Date: 2021-08-27 13:22:45

On Fri, 20 Aug 2021 05:16:05 +0000 (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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help