diff mbox series

samples: ftrace: replace bti assembly with hint for older compiler

Message ID 20230820111509.1470826-1-gongruiqi@huaweicloud.com (mailing list archive)
State Accepted
Commit e332938e6fc8117fb9bb1374339cea879b3972d9
Headers show
Series samples: ftrace: replace bti assembly with hint for older compiler | expand

Commit Message

GONG, Ruiqi Aug. 20, 2023, 11:15 a.m. UTC
From: "GONG, Ruiqi" <gongruiqi1@huawei.com>

When cross-building the arm64 kernel with allmodconfig using GCC 9.4,
the following error occurs on multiple files under samples/ftrace/:

/tmp/ccPC1ODs.s: Assembler messages:
/tmp/ccPC1ODs.s:8: Error: selected processor does not support `bti c'

Fix this issue by replacing `bti c` with `hint 34`, which is compatible
for the older compiler.

Signed-off-by: GONG, Ruiqi <gongruiqi1@huawei.com>
---
 samples/ftrace/ftrace-direct-modify.c       | 4 ++--
 samples/ftrace/ftrace-direct-multi-modify.c | 4 ++--
 samples/ftrace/ftrace-direct-multi.c        | 2 +-
 samples/ftrace/ftrace-direct-too.c          | 2 +-
 samples/ftrace/ftrace-direct.c              | 2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

Comments

Steven Rostedt Aug. 21, 2023, 3:34 p.m. UTC | #1
Strange, I had to download this from lore. I only noticed this from
patchwork, but this email never made it to my inbox, nor to either my
kernel-tracing or LKML folders :-/

Anyway,

Mark, can you review this?

// patchwork link:
//    https://patchwork.kernel.org/project/linux-trace-kernel/patch/20230820111509.1470826-1-gongruiqi@huaweicloud.com/

-- Steve


On Sun, 20 Aug 2023 19:15:09 +0800
"GONG, Ruiqi" <gongruiqi@huaweicloud.com> wrote:

> From: "GONG, Ruiqi" <gongruiqi1@huawei.com>
> 
> When cross-building the arm64 kernel with allmodconfig using GCC 9.4,
> the following error occurs on multiple files under samples/ftrace/:
> 
> /tmp/ccPC1ODs.s: Assembler messages:
> /tmp/ccPC1ODs.s:8: Error: selected processor does not support `bti c'
> 
> Fix this issue by replacing `bti c` with `hint 34`, which is compatible
> for the older compiler.
> 
> Signed-off-by: GONG, Ruiqi <gongruiqi1@huawei.com>
> ---
>  samples/ftrace/ftrace-direct-modify.c       | 4 ++--
>  samples/ftrace/ftrace-direct-multi-modify.c | 4 ++--
>  samples/ftrace/ftrace-direct-multi.c        | 2 +-
>  samples/ftrace/ftrace-direct-too.c          | 2 +-
>  samples/ftrace/ftrace-direct.c              | 2 +-
>  5 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/samples/ftrace/ftrace-direct-modify.c b/samples/ftrace/ftrace-direct-modify.c
> index e5ed08098ff3..e2a6a69352df 100644
> --- a/samples/ftrace/ftrace-direct-modify.c
> +++ b/samples/ftrace/ftrace-direct-modify.c
> @@ -105,7 +105,7 @@ asm (
>  "	.type		my_tramp1, @function\n"
>  "	.globl		my_tramp1\n"
>  "   my_tramp1:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #16\n"
>  "	stp	x9, x30, [sp]\n"
>  "	bl	my_direct_func1\n"
> @@ -117,7 +117,7 @@ asm (
>  "	.type		my_tramp2, @function\n"
>  "	.globl		my_tramp2\n"
>  "   my_tramp2:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #16\n"
>  "	stp	x9, x30, [sp]\n"
>  "	bl	my_direct_func2\n"
> diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c
> index 292cff2b3f5d..2e349834d63c 100644
> --- a/samples/ftrace/ftrace-direct-multi-modify.c
> +++ b/samples/ftrace/ftrace-direct-multi-modify.c
> @@ -112,7 +112,7 @@ asm (
>  "	.type		my_tramp1, @function\n"
>  "	.globl		my_tramp1\n"
>  "   my_tramp1:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> @@ -127,7 +127,7 @@ asm (
>  "	.type		my_tramp2, @function\n"
>  "	.globl		my_tramp2\n"
>  "   my_tramp2:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> diff --git a/samples/ftrace/ftrace-direct-multi.c b/samples/ftrace/ftrace-direct-multi.c
> index b4391e08c913..9243dbfe4d0c 100644
> --- a/samples/ftrace/ftrace-direct-multi.c
> +++ b/samples/ftrace/ftrace-direct-multi.c
> @@ -75,7 +75,7 @@ asm (
>  "	.type		my_tramp, @function\n"
>  "	.globl		my_tramp\n"
>  "   my_tramp:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c
> index e9804c5307c0..e39c3563ae4e 100644
> --- a/samples/ftrace/ftrace-direct-too.c
> +++ b/samples/ftrace/ftrace-direct-too.c
> @@ -81,7 +81,7 @@ asm (
>  "	.type		my_tramp, @function\n"
>  "	.globl		my_tramp\n"
>  "   my_tramp:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #48\n"
>  "	stp	x9, x30, [sp]\n"
>  "	stp	x0, x1, [sp, #16]\n"
> diff --git a/samples/ftrace/ftrace-direct.c b/samples/ftrace/ftrace-direct.c
> index 20f4a7caa810..32c477da1e9a 100644
> --- a/samples/ftrace/ftrace-direct.c
> +++ b/samples/ftrace/ftrace-direct.c
> @@ -72,7 +72,7 @@ asm (
>  "	.type		my_tramp, @function\n"
>  "	.globl		my_tramp\n"
>  "   my_tramp:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
Florent Revest Aug. 21, 2023, 3:41 p.m. UTC | #2
On Sun, Aug 20, 2023 at 1:10 PM GONG, Ruiqi <gongruiqi@huaweicloud.com> wrote:
>
> When cross-building the arm64 kernel with allmodconfig using GCC 9.4,
> the following error occurs on multiple files under samples/ftrace/:
>
> /tmp/ccPC1ODs.s: Assembler messages:
> /tmp/ccPC1ODs.s:8: Error: selected processor does not support `bti c'
>
> Fix this issue by replacing `bti c` with `hint 34`, which is compatible
> for the older compiler.

I see this hint is already used in
tools/testing/selftests/arm64/fp/rdvl.S but I'm curious why it isn't
used in other parts of the kernel like
arch/arm64/kernel/entry-ftrace.S or
tools/testing/selftests/arm64/bti/syscall.S
Mark Rutland Aug. 21, 2023, 4:04 p.m. UTC | #3
On Mon, Aug 21, 2023 at 05:41:21PM +0200, Florent Revest wrote:
> On Sun, Aug 20, 2023 at 1:10 PM GONG, Ruiqi <gongruiqi@huaweicloud.com> wrote:
> >
> > When cross-building the arm64 kernel with allmodconfig using GCC 9.4,
> > the following error occurs on multiple files under samples/ftrace/:
> >
> > /tmp/ccPC1ODs.s: Assembler messages:
> > /tmp/ccPC1ODs.s:8: Error: selected processor does not support `bti c'
> >
> > Fix this issue by replacing `bti c` with `hint 34`, which is compatible
> > for the older compiler.
> 
> I see this hint is already used in
> tools/testing/selftests/arm64/fp/rdvl.S but I'm curious why it isn't
> used in other parts of the kernel like
> arch/arm64/kernel/entry-ftrace.S or
> tools/testing/selftests/arm64/bti/syscall.S

For assembly files, the macro in arch/arm64/include/asm/assembler.h handles
this automatically. See commit:

  9be34be87cc8d1af ("arm64: Add macro version of the BTI instruction")

For inline asembly, we need to explicitly instantiate all of that in the inline
asm block, and since clang treats each asm block independently, we can'y just
define that in one place in a header somewhere.

I'll reply to the patch in a sec...

Mark.
Mark Rutland Aug. 21, 2023, 4:12 p.m. UTC | #4
On Sun, Aug 20, 2023 at 07:15:09PM +0800, GONG, Ruiqi wrote:
> From: "GONG, Ruiqi" <gongruiqi1@huawei.com>
> 
> When cross-building the arm64 kernel with allmodconfig using GCC 9.4,
> the following error occurs on multiple files under samples/ftrace/:
> 
> /tmp/ccPC1ODs.s: Assembler messages:
> /tmp/ccPC1ODs.s:8: Error: selected processor does not support `bti c'
> 
> Fix this issue by replacing `bti c` with `hint 34`, which is compatible
> for the older compiler.
> 
> Signed-off-by: GONG, Ruiqi <gongruiqi1@huawei.com>

Sorry about this; I'd forgotten about earlier compilers when reviewing the
original patch. It's a bit unfortunate to have to hand-code this each time, but
I'm not sure that it'd actually be cleaner to have a macro.

For the moment, I reckon this is worth taking as-is.

Steve, are you happy to add:

  Fixes: 8c3526fb86060cb5 ("arm64: ftrace: Add direct call trampoline samples support")
  Acked-by: Mark Rutland <mark.rutland@arm.com>

... ?

Thanks,
Mark.

> ---
>  samples/ftrace/ftrace-direct-modify.c       | 4 ++--
>  samples/ftrace/ftrace-direct-multi-modify.c | 4 ++--
>  samples/ftrace/ftrace-direct-multi.c        | 2 +-
>  samples/ftrace/ftrace-direct-too.c          | 2 +-
>  samples/ftrace/ftrace-direct.c              | 2 +-
>  5 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/samples/ftrace/ftrace-direct-modify.c b/samples/ftrace/ftrace-direct-modify.c
> index e5ed08098ff3..e2a6a69352df 100644
> --- a/samples/ftrace/ftrace-direct-modify.c
> +++ b/samples/ftrace/ftrace-direct-modify.c
> @@ -105,7 +105,7 @@ asm (
>  "	.type		my_tramp1, @function\n"
>  "	.globl		my_tramp1\n"
>  "   my_tramp1:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #16\n"
>  "	stp	x9, x30, [sp]\n"
>  "	bl	my_direct_func1\n"
> @@ -117,7 +117,7 @@ asm (
>  "	.type		my_tramp2, @function\n"
>  "	.globl		my_tramp2\n"
>  "   my_tramp2:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #16\n"
>  "	stp	x9, x30, [sp]\n"
>  "	bl	my_direct_func2\n"
> diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c
> index 292cff2b3f5d..2e349834d63c 100644
> --- a/samples/ftrace/ftrace-direct-multi-modify.c
> +++ b/samples/ftrace/ftrace-direct-multi-modify.c
> @@ -112,7 +112,7 @@ asm (
>  "	.type		my_tramp1, @function\n"
>  "	.globl		my_tramp1\n"
>  "   my_tramp1:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> @@ -127,7 +127,7 @@ asm (
>  "	.type		my_tramp2, @function\n"
>  "	.globl		my_tramp2\n"
>  "   my_tramp2:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> diff --git a/samples/ftrace/ftrace-direct-multi.c b/samples/ftrace/ftrace-direct-multi.c
> index b4391e08c913..9243dbfe4d0c 100644
> --- a/samples/ftrace/ftrace-direct-multi.c
> +++ b/samples/ftrace/ftrace-direct-multi.c
> @@ -75,7 +75,7 @@ asm (
>  "	.type		my_tramp, @function\n"
>  "	.globl		my_tramp\n"
>  "   my_tramp:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c
> index e9804c5307c0..e39c3563ae4e 100644
> --- a/samples/ftrace/ftrace-direct-too.c
> +++ b/samples/ftrace/ftrace-direct-too.c
> @@ -81,7 +81,7 @@ asm (
>  "	.type		my_tramp, @function\n"
>  "	.globl		my_tramp\n"
>  "   my_tramp:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #48\n"
>  "	stp	x9, x30, [sp]\n"
>  "	stp	x0, x1, [sp, #16]\n"
> diff --git a/samples/ftrace/ftrace-direct.c b/samples/ftrace/ftrace-direct.c
> index 20f4a7caa810..32c477da1e9a 100644
> --- a/samples/ftrace/ftrace-direct.c
> +++ b/samples/ftrace/ftrace-direct.c
> @@ -72,7 +72,7 @@ asm (
>  "	.type		my_tramp, @function\n"
>  "	.globl		my_tramp\n"
>  "   my_tramp:"
> -"	bti	c\n"
> +"	hint	34\n" // bti	c
>  "	sub	sp, sp, #32\n"
>  "	stp	x9, x30, [sp]\n"
>  "	str	x0, [sp, #16]\n"
> -- 
> 2.25.1
>
diff mbox series

Patch

diff --git a/samples/ftrace/ftrace-direct-modify.c b/samples/ftrace/ftrace-direct-modify.c
index e5ed08098ff3..e2a6a69352df 100644
--- a/samples/ftrace/ftrace-direct-modify.c
+++ b/samples/ftrace/ftrace-direct-modify.c
@@ -105,7 +105,7 @@  asm (
 "	.type		my_tramp1, @function\n"
 "	.globl		my_tramp1\n"
 "   my_tramp1:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #16\n"
 "	stp	x9, x30, [sp]\n"
 "	bl	my_direct_func1\n"
@@ -117,7 +117,7 @@  asm (
 "	.type		my_tramp2, @function\n"
 "	.globl		my_tramp2\n"
 "   my_tramp2:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #16\n"
 "	stp	x9, x30, [sp]\n"
 "	bl	my_direct_func2\n"
diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c
index 292cff2b3f5d..2e349834d63c 100644
--- a/samples/ftrace/ftrace-direct-multi-modify.c
+++ b/samples/ftrace/ftrace-direct-multi-modify.c
@@ -112,7 +112,7 @@  asm (
 "	.type		my_tramp1, @function\n"
 "	.globl		my_tramp1\n"
 "   my_tramp1:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #32\n"
 "	stp	x9, x30, [sp]\n"
 "	str	x0, [sp, #16]\n"
@@ -127,7 +127,7 @@  asm (
 "	.type		my_tramp2, @function\n"
 "	.globl		my_tramp2\n"
 "   my_tramp2:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #32\n"
 "	stp	x9, x30, [sp]\n"
 "	str	x0, [sp, #16]\n"
diff --git a/samples/ftrace/ftrace-direct-multi.c b/samples/ftrace/ftrace-direct-multi.c
index b4391e08c913..9243dbfe4d0c 100644
--- a/samples/ftrace/ftrace-direct-multi.c
+++ b/samples/ftrace/ftrace-direct-multi.c
@@ -75,7 +75,7 @@  asm (
 "	.type		my_tramp, @function\n"
 "	.globl		my_tramp\n"
 "   my_tramp:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #32\n"
 "	stp	x9, x30, [sp]\n"
 "	str	x0, [sp, #16]\n"
diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c
index e9804c5307c0..e39c3563ae4e 100644
--- a/samples/ftrace/ftrace-direct-too.c
+++ b/samples/ftrace/ftrace-direct-too.c
@@ -81,7 +81,7 @@  asm (
 "	.type		my_tramp, @function\n"
 "	.globl		my_tramp\n"
 "   my_tramp:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #48\n"
 "	stp	x9, x30, [sp]\n"
 "	stp	x0, x1, [sp, #16]\n"
diff --git a/samples/ftrace/ftrace-direct.c b/samples/ftrace/ftrace-direct.c
index 20f4a7caa810..32c477da1e9a 100644
--- a/samples/ftrace/ftrace-direct.c
+++ b/samples/ftrace/ftrace-direct.c
@@ -72,7 +72,7 @@  asm (
 "	.type		my_tramp, @function\n"
 "	.globl		my_tramp\n"
 "   my_tramp:"
-"	bti	c\n"
+"	hint	34\n" // bti	c
 "	sub	sp, sp, #32\n"
 "	stp	x9, x30, [sp]\n"
 "	str	x0, [sp, #16]\n"