• Pratyush Anand's avatar
    arm64: ftrace: add save_stack_trace_regs() · 98ab10e9
    Pratyush Anand authored
    Currently, enabling stacktrace of a kprobe events generates warning:
    
      echo stacktrace > /sys/kernel/debug/tracing/trace_options
      echo "p xhci_irq" > /sys/kernel/debug/tracing/kprobe_events
      echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable
    
    save_stack_trace_regs() not implemented yet.
    ------------[ cut here ]------------
    WARNING: CPU: 1 PID: 0 at ../kernel/stacktrace.c:74 save_stack_trace_regs+0x3c/0x48
    Modules linked in:
    
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.8.0-rc4-dirty #5128
    Hardware name: ARM Juno development board (r1) (DT)
    task: ffff800975dd1900 task.stack: ffff800975ddc000
    PC is at save_stack_trace_regs+0x3c/0x48
    LR is at save_stack_trace_regs+0x3c/0x48
    pc : [<ffff000008126c64>] lr : [<ffff000008126c64>] pstate: 600003c5
    sp : ffff80097ef52c00
    
    Call trace:
       save_stack_trace_regs+0x3c/0x48
       __ftrace_trace_stack+0x168/0x208
       trace_buffer_unlock_commit_regs+0x5c/0x7c
       kprobe_trace_func+0x308/0x3d8
       kprobe_dispatcher+0x58/0x60
       kprobe_breakpoint_handler+0xbc/0x18c
       brk_handler+0x50/0x90
       do_debug_exception+0x50/0xbc
    
    This patch implements save_stack_trace_regs(), so that stacktrace of a
    kprobe events can be obtained.
    
    After this patch, there is no warning and we can see the stacktrace for
    kprobe events in trace buffer.
    
    more /sys/kernel/debug/tracing/trace
              <idle>-0     [004] d.h.  1356.000496: p_xhci_irq_0:(xhci_irq+0x0/0x9ac)
              <idle>-0     [004] d.h.  1356.000497: <stack trace>
      => xhci_irq
      => __handle_irq_event_percpu
      => handle_irq_event_percpu
      => handle_irq_event
      => handle_fasteoi_irq
      => generic_handle_irq
      => __handle_domain_irq
      => gic_handle_irq
      => el1_irq
      => arch_cpu_idle
      => default_idle_call
      => cpu_startup_entry
      => secondary_start_kernel
      =>
    Tested-by: default avatarDavid A. Long <dave.long@linaro.org>
    Reviewed-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarPratyush Anand <panand@redhat.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    98ab10e9
stacktrace.c 5.34 KB