On Fri, 2016-01-08 at 17:50 -0500, Steven Rostedt wrote: > On Wed, 16 Dec 2015 12:24:19 -0500 > Steven Rostedt <rost...@goodmis.org> wrote: > > On Wed, 09 Dec 2015 12:03:05 +1100 > > Michael Ellerman <m...@ellerman.id.au> wrote: > > > > > Should I take this via powerpc or do you want it to go in via tracing? > > > > > > > > You can take it. And you can replace the PT_R1 if you want. I just > > > > noticed that it was defined, and I try to use macro names instead of > > > > hard coded numbers. I was actually looking for a "PT_SP" :-) > > > > > > OK thanks. > > > > > > Looks like we actually have: > > > > > > #define kernel_stack_pointer(regs) ((regs)->gpr[1]) > > > > > > So that would be the most self documenting way to do it I guess, though > > > I've > > > never actually seen that macro used anywhere before :) > > > > Hi, > > > > Are you going to take this, or do you want me to?
Sorry, yep I'll take it. I trimmed the change log a bit, final version below. cheers powerpc: Implement save_stack_trace_regs() to enable kprobe stack tracing It has come to my attention that kprobe event stack tracing does not work on powerpc. You can see with the following: # cd /sys/kernel/debug/tracing # echo stacktrace > trace_options # echo 'p kfree' > kprobe_events # echo 1 > events/kprobes/enable Will print the following warning: save_stack_trace_regs() not implemented yet. Although save_stack_trace() (which normal event stack traces use) is implemented, save_stack_trace_regs() which kprobe events use is not. This is a cheap attempt to implement that function. Note, This may have issues if a task tries to get a stack trace from another task with its regs, because it just passes in "current" to save_context_stack(). But this does solve the issue with stack tracing kprobe events. Reported-by: Chunyu Hu <ch...@redhat.com> Signed-off-by: Steven Rostedt <rost...@goodmis.org> Signed-off-by: Michael Ellerman <m...@ellerman.id.au> diff --git a/arch/powerpc/kernel/stacktrace.c b/arch/powerpc/kernel/stacktrace.c index ea43a347a104..4f24606afc3f 100644 --- a/arch/powerpc/kernel/stacktrace.c +++ b/arch/powerpc/kernel/stacktrace.c @@ -61,3 +61,10 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) save_context_stack(trace, tsk->thread.ksp, tsk, 0); } EXPORT_SYMBOL_GPL(save_stack_trace_tsk); + +void +save_stack_trace_regs(struct pt_regs *regs, struct stack_trace *trace) +{ + save_context_stack(trace, regs->gpr[1], current, 0); +} +EXPORT_SYMBOL_GPL(save_stack_trace_regs); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev