Message ID | 20230511093234.3123181-5-suagrfillet@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | riscv: Optimize function trace | expand |
On Thu, 11 May 2023 17:32:34 +0800 Song Shuai <suagrfillet@gmail.com> wrote: > select HAVE_SAMPLE_FTRACE_DIRECT and HAVE_SAMPLE_FTRACE_DIRECT_MULTI > for ARCH_RV64I in arch/riscv/Kconfig. And add riscv asm code for > the ftrace-direct*.c files in samples/ftrace/. > > Link: https://lore.kernel.org/linux-riscv/c68bac83-5c88-80b1-bac9-e1fd4ea8f07e@yadro.com/T/#ma13012560331c66b051b580b3ab4a04ba44455ec > Tested-by: Evgenii Shatokhin <e.shatokhin@yadro.com> > Signed-off-by: Song Shuai <suagrfillet@gmail.com> > Tested-by: Guo Ren <guoren@kernel.org> > Signed-off-by: Guo Ren <guoren@kernel.org> > Acked-by: Björn Töpel <bjorn@rivosinc.com> > --- > arch/riscv/Kconfig | 2 ++ > samples/ftrace/ftrace-direct-modify.c | 34 ++++++++++++++++++ > samples/ftrace/ftrace-direct-multi-modify.c | 40 +++++++++++++++++++++ > samples/ftrace/ftrace-direct-multi.c | 24 +++++++++++++ > samples/ftrace/ftrace-direct-too.c | 27 ++++++++++++++ > samples/ftrace/ftrace-direct.c | 23 ++++++++++++ > 6 files changed, 150 insertions(+) I acked v8 (which you will need my ack to get these in). Unless this patch changed since v8, you should include my ack in further versions. Or you may be waiting longer for its acceptance. If the patch did change, please acknowledge that in the next version (or this one if it did change), asking me to ack it again. -- Steve
On Mon, 15 May 2023 14:37:00 -0400 Steven Rostedt <rostedt@goodmis.org> wrote: > On Thu, 11 May 2023 17:32:34 +0800 > Song Shuai <suagrfillet@gmail.com> wrote: > > > select HAVE_SAMPLE_FTRACE_DIRECT and HAVE_SAMPLE_FTRACE_DIRECT_MULTI > > for ARCH_RV64I in arch/riscv/Kconfig. And add riscv asm code for > > the ftrace-direct*.c files in samples/ftrace/. > > > > Link: https://lore.kernel.org/linux-riscv/c68bac83-5c88-80b1-bac9-e1fd4ea8f07e@yadro.com/T/#ma13012560331c66b051b580b3ab4a04ba44455ec > > Tested-by: Evgenii Shatokhin <e.shatokhin@yadro.com> > > Signed-off-by: Song Shuai <suagrfillet@gmail.com> > > Tested-by: Guo Ren <guoren@kernel.org> > > Signed-off-by: Guo Ren <guoren@kernel.org> > > Acked-by: Björn Töpel <bjorn@rivosinc.com> > > --- > > arch/riscv/Kconfig | 2 ++ > > samples/ftrace/ftrace-direct-modify.c | 34 ++++++++++++++++++ > > samples/ftrace/ftrace-direct-multi-modify.c | 40 +++++++++++++++++++++ > > samples/ftrace/ftrace-direct-multi.c | 24 +++++++++++++ > > samples/ftrace/ftrace-direct-too.c | 27 ++++++++++++++ > > samples/ftrace/ftrace-direct.c | 23 ++++++++++++ > > 6 files changed, 150 insertions(+) > > I acked v8 (which you will need my ack to get these in). Unless this patch > changed since v8, you should include my ack in further versions. > > Or you may be waiting longer for its acceptance. > > If the patch did change, please acknowledge that in the next version (or > this one if it did change), asking me to ack it again. > Nevermind, I'm an idiot (and my inbox is not in date order). You sent this *after* I acked v8, when I should have been acking this one. ;-) Sorry about that! I've been traveling and my inbox is a mess :-p -- Steve
Steven Rostedt <rostedt@goodmis.org> 于2023年5月15日周一 18:37写道: > > On Thu, 11 May 2023 17:32:34 +0800 > Song Shuai <suagrfillet@gmail.com> wrote: > > > select HAVE_SAMPLE_FTRACE_DIRECT and HAVE_SAMPLE_FTRACE_DIRECT_MULTI > > for ARCH_RV64I in arch/riscv/Kconfig. And add riscv asm code for > > the ftrace-direct*.c files in samples/ftrace/. > > > > Link: https://lore.kernel.org/linux-riscv/c68bac83-5c88-80b1-bac9-e1fd4ea8f07e@yadro.com/T/#ma13012560331c66b051b580b3ab4a04ba44455ec > > Tested-by: Evgenii Shatokhin <e.shatokhin@yadro.com> > > Signed-off-by: Song Shuai <suagrfillet@gmail.com> > > Tested-by: Guo Ren <guoren@kernel.org> > > Signed-off-by: Guo Ren <guoren@kernel.org> > > Acked-by: Björn Töpel <bjorn@rivosinc.com> > > --- > > arch/riscv/Kconfig | 2 ++ > > samples/ftrace/ftrace-direct-modify.c | 34 ++++++++++++++++++ > > samples/ftrace/ftrace-direct-multi-modify.c | 40 +++++++++++++++++++++ > > samples/ftrace/ftrace-direct-multi.c | 24 +++++++++++++ > > samples/ftrace/ftrace-direct-too.c | 27 ++++++++++++++ > > samples/ftrace/ftrace-direct.c | 23 ++++++++++++ > > 6 files changed, 150 insertions(+) > > I acked v8 (which you will need my ack to get these in). Unless this patch > changed since v8, you should include my ack in further versions. > There were no changes in this patch, except for a few tab pretties since v8. your Acked-by will still be included. > Or you may be waiting longer for its acceptance. > > If the patch did change, please acknowledge that in the next version (or > this one if it did change), asking me to ack it again. > > -- Steve
On Tue, 16 May 2023 02:37:53 PDT (-0700), suagrfillet@gmail.com wrote: > Steven Rostedt <rostedt@goodmis.org> 于2023年5月15日周一 18:37写道: >> >> On Thu, 11 May 2023 17:32:34 +0800 >> Song Shuai <suagrfillet@gmail.com> wrote: >> >> > select HAVE_SAMPLE_FTRACE_DIRECT and HAVE_SAMPLE_FTRACE_DIRECT_MULTI >> > for ARCH_RV64I in arch/riscv/Kconfig. And add riscv asm code for >> > the ftrace-direct*.c files in samples/ftrace/. >> > >> > Link: https://lore.kernel.org/linux-riscv/c68bac83-5c88-80b1-bac9-e1fd4ea8f07e@yadro.com/T/#ma13012560331c66b051b580b3ab4a04ba44455ec >> > Tested-by: Evgenii Shatokhin <e.shatokhin@yadro.com> >> > Signed-off-by: Song Shuai <suagrfillet@gmail.com> >> > Tested-by: Guo Ren <guoren@kernel.org> >> > Signed-off-by: Guo Ren <guoren@kernel.org> >> > Acked-by: Björn Töpel <bjorn@rivosinc.com> >> > --- >> > arch/riscv/Kconfig | 2 ++ >> > samples/ftrace/ftrace-direct-modify.c | 34 ++++++++++++++++++ >> > samples/ftrace/ftrace-direct-multi-modify.c | 40 +++++++++++++++++++++ >> > samples/ftrace/ftrace-direct-multi.c | 24 +++++++++++++ >> > samples/ftrace/ftrace-direct-too.c | 27 ++++++++++++++ >> > samples/ftrace/ftrace-direct.c | 23 ++++++++++++ >> > 6 files changed, 150 insertions(+) >> >> I acked v8 (which you will need my ack to get these in). Unless this patch >> changed since v8, you should include my ack in further versions. >> > There were no changes in this patch, except for a few tab pretties since v8. > your Acked-by will still be included. >> Or you may be waiting longer for its acceptance. >> >> If the patch did change, please acknowledge that in the next version (or >> this one if it did change), asking me to ack it again. The samples fail to build on rv32, they're rv64-specific. I think something like this should do it diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c index 5c319db48af2..3707c447a42d 100644 --- a/samples/ftrace/ftrace-direct-too.c +++ b/samples/ftrace/ftrace-direct-too.c @@ -24,19 +24,19 @@ asm ( " .type my_tramp, @function\n" " .globl my_tramp\n" " my_tramp:\n" -" addi sp,sp,-40\n" -" sd a0,0(sp)\n" -" sd a1,8(sp)\n" -" sd a2,16(sp)\n" -" sd t0,24(sp)\n" -" sd ra,32(sp)\n" +" addi sp,sp,-8*SZREG\n" +" REG_S a0,0*SZREG(sp)\n" +" REG_S a1,1*SZREG(sp)\n" +" REG_S a2,2*SZREG(sp)\n" +" REG_S t0,3*SZREG(sp)\n" +" REG_S ra,4*SZREG(sp)\n" " call my_direct_func\n" -" ld a0,0(sp)\n" -" ld a1,8(sp)\n" -" ld a2,16(sp)\n" -" ld t0,24(sp)\n" -" ld ra,32(sp)\n" -" addi sp,sp,40\n" +" REG_L a0,0*SZREG(sp)\n" +" REG_L a1,1*SZREG(sp)\n" +" REG_L a2,2*SZREG(sp)\n" +" REG_L t0,3*SZREG(sp)\n" +" REG_L ra,4*SZREG(sp)\n" +" addi sp,sp,8*SZREG\n" " jr t0\n" " .size my_tramp, .-my_tramp\n" " .popsection\n" probably for all of them. Do you mind sending a v11 with that fixed? >> >> -- Steve > > > > -- > Thanks, > Song
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index fdf0b219a02c..cb94ef086f0c 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -121,6 +121,8 @@ config RISCV select HAVE_POSIX_CPU_TIMERS_TASK_WORK select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_RSEQ + select HAVE_SAMPLE_FTRACE_DIRECT + select HAVE_SAMPLE_FTRACE_DIRECT_MULTI select HAVE_STACKPROTECTOR select HAVE_SYSCALL_TRACEPOINTS select IRQ_DOMAIN diff --git a/samples/ftrace/ftrace-direct-modify.c b/samples/ftrace/ftrace-direct-modify.c index 06d889149012..e90ca7b68314 100644 --- a/samples/ftrace/ftrace-direct-modify.c +++ b/samples/ftrace/ftrace-direct-modify.c @@ -22,6 +22,40 @@ extern void my_tramp2(void *); static unsigned long my_ip = (unsigned long)schedule; +#ifdef CONFIG_RISCV + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp1, @function\n" +" .globl my_tramp1\n" +" my_tramp1:\n" +" addi sp,sp,-16\n" +" sd t0,0(sp)\n" +" sd ra,8(sp)\n" +" call my_direct_func1\n" +" ld t0,0(sp)\n" +" ld ra,8(sp)\n" +" addi sp,sp,16\n" +" jr t0\n" +" .size my_tramp1, .-my_tramp1\n" + +" .type my_tramp2, @function\n" +" .globl my_tramp2\n" +" my_tramp2:\n" +" addi sp,sp,-16\n" +" sd t0,0(sp)\n" +" sd ra,8(sp)\n" +" call my_direct_func2\n" +" ld t0,0(sp)\n" +" ld ra,8(sp)\n" +" addi sp,sp,16\n" +" jr t0\n" +" .size my_tramp2, .-my_tramp2\n" +" .popsection\n" +); + +#endif /* CONFIG_RISCV */ + #ifdef CONFIG_X86_64 #include <asm/ibt.h> diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c index 62f6b681999e..5a81af7b3af3 100644 --- a/samples/ftrace/ftrace-direct-multi-modify.c +++ b/samples/ftrace/ftrace-direct-multi-modify.c @@ -20,6 +20,46 @@ void my_direct_func2(unsigned long ip) extern void my_tramp1(void *); extern void my_tramp2(void *); +#ifdef CONFIG_RISCV + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp1, @function\n" +" .globl my_tramp1\n" +" my_tramp1:\n" +" addi sp,sp,-24\n" +" sd a0,0(sp)\n" +" sd t0,8(sp)\n" +" sd ra,16(sp)\n" +" mv a0,t0\n" +" call my_direct_func1\n" +" ld a0,0(sp)\n" +" ld t0,8(sp)\n" +" ld ra,16(sp)\n" +" addi sp,sp,24\n" +" jr t0\n" +" .size my_tramp1, .-my_tramp1\n" + +" .type my_tramp2, @function\n" +" .globl my_tramp2\n" +" my_tramp2:\n" +" addi sp,sp,-24\n" +" sd a0,0(sp)\n" +" sd t0,8(sp)\n" +" sd ra,16(sp)\n" +" mv a0,t0\n" +" call my_direct_func2\n" +" ld a0,0(sp)\n" +" ld t0,8(sp)\n" +" ld ra,16(sp)\n" +" addi sp,sp,24\n" +" jr t0\n" +" .size my_tramp2, .-my_tramp2\n" +" .popsection\n" +); + +#endif /* CONFIG_RISCV */ + #ifdef CONFIG_X86_64 #include <asm/ibt.h> diff --git a/samples/ftrace/ftrace-direct-multi.c b/samples/ftrace/ftrace-direct-multi.c index 5482cf616b43..0e9bb94edade 100644 --- a/samples/ftrace/ftrace-direct-multi.c +++ b/samples/ftrace/ftrace-direct-multi.c @@ -15,6 +15,30 @@ void my_direct_func(unsigned long ip) extern void my_tramp(void *); +#ifdef CONFIG_RISCV + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp, @function\n" +" .globl my_tramp\n" +" my_tramp:\n" +" addi sp,sp,-24\n" +" sd a0,0(sp)\n" +" sd t0,8(sp)\n" +" sd ra,16(sp)\n" +" mv a0,t0\n" +" call my_direct_func\n" +" ld a0,0(sp)\n" +" ld t0,8(sp)\n" +" ld ra,16(sp)\n" +" addi sp,sp,24\n" +" jr t0\n" +" .size my_tramp, .-my_tramp\n" +" .popsection\n" +); + +#endif /* CONFIG_RISCV */ + #ifdef CONFIG_X86_64 #include <asm/ibt.h> diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c index a05bc2cc2261..5c319db48af2 100644 --- a/samples/ftrace/ftrace-direct-too.c +++ b/samples/ftrace/ftrace-direct-too.c @@ -17,6 +17,33 @@ void my_direct_func(struct vm_area_struct *vma, extern void my_tramp(void *); +#ifdef CONFIG_RISCV + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp, @function\n" +" .globl my_tramp\n" +" my_tramp:\n" +" addi sp,sp,-40\n" +" sd a0,0(sp)\n" +" sd a1,8(sp)\n" +" sd a2,16(sp)\n" +" sd t0,24(sp)\n" +" sd ra,32(sp)\n" +" call my_direct_func\n" +" ld a0,0(sp)\n" +" ld a1,8(sp)\n" +" ld a2,16(sp)\n" +" ld t0,24(sp)\n" +" ld ra,32(sp)\n" +" addi sp,sp,40\n" +" jr t0\n" +" .size my_tramp, .-my_tramp\n" +" .popsection\n" +); + +#endif /* CONFIG_RISCV */ + #ifdef CONFIG_X86_64 #include <asm/ibt.h> diff --git a/samples/ftrace/ftrace-direct.c b/samples/ftrace/ftrace-direct.c index 06879bbd3399..ca95506b0350 100644 --- a/samples/ftrace/ftrace-direct.c +++ b/samples/ftrace/ftrace-direct.c @@ -14,6 +14,29 @@ void my_direct_func(struct task_struct *p) extern void my_tramp(void *); +#ifdef CONFIG_RISCV + +asm ( +" .pushsection .text, \"ax\", @progbits\n" +" .type my_tramp, @function\n" +" .globl my_tramp\n" +" my_tramp:\n" +" addi sp,sp,-24\n" +" sd a0,0(sp)\n" +" sd t0,8(sp)\n" +" sd ra,16(sp)\n" +" call my_direct_func\n" +" ld a0,0(sp)\n" +" ld t0,8(sp)\n" +" ld ra,16(sp)\n" +" addi sp,sp,24\n" +" jr t0\n" +" .size my_tramp, .-my_tramp\n" +" .popsection\n" +); + +#endif /* CONFIG_RISCV */ + #ifdef CONFIG_X86_64 #include <asm/ibt.h>