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 |
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"
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
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.
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 --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"