Loading arch/s390/include/asm/ftrace.h +2 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ #define MCOUNT_RETURN_FIXUP 18 #endif #define HAVE_FUNCTION_GRAPH_RET_ADDR_PTR #ifndef __ASSEMBLY__ #ifdef CONFIG_CC_IS_CLANG Loading arch/s390/kernel/entry.h +1 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ int setup_profiling_timer(unsigned int multiplier); void __init time_init(void); int pfn_is_nosave(unsigned long); void s390_early_resume(void); unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip); unsigned long prepare_ftrace_return(unsigned long parent, unsigned long sp, unsigned long ip); struct s390_mmap_arg_struct; struct fadvise64_64_args; Loading arch/s390/kernel/ftrace.c +5 −4 Original line number Diff line number Diff line Loading @@ -201,17 +201,18 @@ device_initcall(ftrace_plt_init); * Hook the return address and push it in the stack of return addresses * in current thread info. */ unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip) unsigned long prepare_ftrace_return(unsigned long ra, unsigned long sp, unsigned long ip) { if (unlikely(ftrace_graph_is_dead())) goto out; if (unlikely(atomic_read(¤t->tracing_graph_pause))) goto out; ip -= MCOUNT_INSN_SIZE; if (!function_graph_enter(parent, ip, 0, NULL)) parent = (unsigned long) return_to_handler; if (!function_graph_enter(ra, ip, 0, (void *) sp)) ra = (unsigned long) return_to_handler; out: return parent; return ra; } NOKPROBE_SYMBOL(prepare_ftrace_return); Loading arch/s390/kernel/mcount.S +2 −2 Original line number Diff line number Diff line Loading @@ -65,8 +65,8 @@ ENTRY(ftrace_caller) .globl ftrace_graph_caller ftrace_graph_caller: j ftrace_graph_caller_end lg %r2,(STACK_PTREGS_GPRS+14*8)(%r15) lg %r3,(STACK_PTREGS_PSW+8)(%r15) lmg %r2,%r3,(STACK_PTREGS_GPRS+14*8)(%r15) lg %r4,(STACK_PTREGS_PSW+8)(%r15) brasl %r14,prepare_ftrace_return stg %r2,(STACK_PTREGS_GPRS+14*8)(%r15) ftrace_graph_caller_end: Loading arch/s390/kernel/unwind_bc.c +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ bool unwind_next_frame(struct unwind_state *state) /* Decode any ftrace redirection */ if (ip == (unsigned long) return_to_handler) ip = ftrace_graph_ret_addr(state->task, &state->graph_idx, ip, NULL); ip, (void *) sp); #endif /* Update unwind state */ Loading Loading
arch/s390/include/asm/ftrace.h +2 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ #define MCOUNT_RETURN_FIXUP 18 #endif #define HAVE_FUNCTION_GRAPH_RET_ADDR_PTR #ifndef __ASSEMBLY__ #ifdef CONFIG_CC_IS_CLANG Loading
arch/s390/kernel/entry.h +1 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ int setup_profiling_timer(unsigned int multiplier); void __init time_init(void); int pfn_is_nosave(unsigned long); void s390_early_resume(void); unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip); unsigned long prepare_ftrace_return(unsigned long parent, unsigned long sp, unsigned long ip); struct s390_mmap_arg_struct; struct fadvise64_64_args; Loading
arch/s390/kernel/ftrace.c +5 −4 Original line number Diff line number Diff line Loading @@ -201,17 +201,18 @@ device_initcall(ftrace_plt_init); * Hook the return address and push it in the stack of return addresses * in current thread info. */ unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip) unsigned long prepare_ftrace_return(unsigned long ra, unsigned long sp, unsigned long ip) { if (unlikely(ftrace_graph_is_dead())) goto out; if (unlikely(atomic_read(¤t->tracing_graph_pause))) goto out; ip -= MCOUNT_INSN_SIZE; if (!function_graph_enter(parent, ip, 0, NULL)) parent = (unsigned long) return_to_handler; if (!function_graph_enter(ra, ip, 0, (void *) sp)) ra = (unsigned long) return_to_handler; out: return parent; return ra; } NOKPROBE_SYMBOL(prepare_ftrace_return); Loading
arch/s390/kernel/mcount.S +2 −2 Original line number Diff line number Diff line Loading @@ -65,8 +65,8 @@ ENTRY(ftrace_caller) .globl ftrace_graph_caller ftrace_graph_caller: j ftrace_graph_caller_end lg %r2,(STACK_PTREGS_GPRS+14*8)(%r15) lg %r3,(STACK_PTREGS_PSW+8)(%r15) lmg %r2,%r3,(STACK_PTREGS_GPRS+14*8)(%r15) lg %r4,(STACK_PTREGS_PSW+8)(%r15) brasl %r14,prepare_ftrace_return stg %r2,(STACK_PTREGS_GPRS+14*8)(%r15) ftrace_graph_caller_end: Loading
arch/s390/kernel/unwind_bc.c +1 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,7 @@ bool unwind_next_frame(struct unwind_state *state) /* Decode any ftrace redirection */ if (ip == (unsigned long) return_to_handler) ip = ftrace_graph_ret_addr(state->task, &state->graph_idx, ip, NULL); ip, (void *) sp); #endif /* Update unwind state */ Loading