linux/arch/arm
Lin Yongting 9c98666163 ARM: 8049/1: ftrace/add save_stack_trace_regs() implementation
When configure kprobe events of ftrace with "stacktrace" option enabled
in arm, there is no stacktrace was recorded after the kprobe event was
triggered. The root cause is no save_stack_trace_regs() function implemented.

Implement the save_stack_trace_regs() function in arm, then ftrace will
call this architecture-related function to record the stacktrace into
ring buffer.

After this fix, stacktrace can be recorded, for example:

 # mount -t debugfs nodev /sys/kernel/debug
 # echo "p:netrx net_rx_action" >> /sys/kernel/debug/tracing/kprobe_events
 # echo 1 > /sys/kernel/debug/tracing/events/kprobes/netrx/enable
 # echo 1 > /sys/kernel/debug/tracing/options/stacktrace
 # echo 1 > /sys/kernel/debug/tracing/tracing_on
 # ping 127.0.0.1 -c 1
 # echo 0 > /sys/kernel/debug/tracing/tracing_on

 # cat /sys/kernel/debug/tracing/trace
 # tracer: nop
 #
 # entries-in-buffer/entries-written: 12/12   #P:1
 #
 #                              _-----=> irqs-off
 #                             / _----=> need-resched
 #                            | / _---=> hardirq/softirq
 #                            || / _--=> preempt-depth
 #                            ||| /     delay
 #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
 #              | |       |   ||||       |         |
             <------ missing some entries ---------------->
             ping-1200  [000] dNs1   667.603250: netrx: (net_rx_action+0x0/0x1f8)
             ping-1200  [000] dNs1   667.604738: <stack trace>
  => net_rx_action
  => do_softirq
  => local_bh_enable
  => ip_finish_output
  => ip_output
  => ip_local_out
  => ip_send_skb
  => ip_push_pending_frames
  => raw_sendmsg
  => inet_sendmsg
  => sock_sendmsg
  => SyS_sendto
  => ret_fast_syscall

Signed-off-by: Lin Yongting <linyongting@gmail.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-05-30 01:12:32 +01:00
..
boot Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-04-10 08:55:08 -07:00
common ARM: 8029/1: mcpm: Rename the power_down_finish() functions to be less confusing 2014-05-25 23:48:12 +01:00
configs MMC highlights for 3.15: 2014-04-09 08:39:39 -07:00
crypto
firmware ARM: trusted_foundations: implement prepare_idle() 2014-02-18 13:46:46 -07:00
include ARM: 8065/1: remove last use of CONFIG_CPU_ARM710 2014-05-30 01:12:30 +01:00
kernel ARM: 8049/1: ftrace/add save_stack_trace_regs() implementation 2014-05-30 01:12:32 +01:00
kvm CPU hotplug notifiers registration fixes for 3.15-rc1 2014-04-07 14:55:46 -07:00
lib ARM: 7990/1: asm: rename logical shift macros push pull into lspush lspull 2014-02-25 11:33:57 +00:00
mach-at91 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-bcm ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-berlin ARM: select HAVE_SMP for V7 multi-platform 2014-02-19 16:43:27 -06:00
mach-clps711x ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-cns3xxx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-davinci ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-dove ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-ebsa110 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-efm32 ARM: efm32: drop unused file <mach/timex.h> 2014-02-24 10:07:27 +01:00
mach-ep93xx ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr 2014-04-25 12:06:38 +01:00
mach-exynos ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-footbridge ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-gemini ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-highbank ARM: select HAVE_SMP for V7 multi-platform 2014-02-19 16:43:27 -06:00
mach-hisi ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-imx ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-integrator ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-iop13xx
mach-iop32x This cleanup series gets rid of <mach/timex.h> for platforms not using 2014-02-24 10:06:56 +01:00
mach-iop33x
mach-ixp4xx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-keystone ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-kirkwood ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-ks8695 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-lpc32xx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-mmp ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-moxart ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-msm ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-mv78xx0 ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-mvebu ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-mxs ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-netx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-nomadik ARM: centralize common multi-platform kconfig options 2014-02-19 16:38:18 -06:00
mach-nspire ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-omap1 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-omap2 fbdev changes for 3.15 (OMAP) 2014-04-07 10:47:51 -07:00
mach-orion5x ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-picoxcell Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-prima2 Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-pxa pwm: Changes for v3.15-rc1 2014-04-05 18:32:31 -07:00
mach-qcom
mach-realview ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-rockchip i.MX SoC changes for 3.15: 2014-03-09 12:03:18 -07:00
mach-rpc ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-s3c24xx Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-s3c64xx ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5p64x0 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5pc100 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5pv210 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-sa1100 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-shmobile Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-socfpga The clock framework changes for 3.15 look similar to past pull requests. 2014-04-05 18:39:18 -07:00
mach-spear ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-sti Merge branch 'cleanup/kconfig' into next/drivers 2014-03-18 16:25:47 +01:00
mach-sunxi ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-tegra ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-u300 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-ux500 ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-versatile ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-vexpress ARM: 8029/1: mcpm: Rename the power_down_finish() functions to be less confusing 2014-05-25 23:48:12 +01:00
mach-vt8500 ARM: vt8500: enable V6K instead of plain V6 2014-02-19 16:47:16 -06:00
mach-w90x900 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-zynq ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mm ARM: 8043/1: uprobes need icache flush after xol write 2014-05-25 23:48:45 +01:00
net net: filter: add jited flag to indicate jit compiled filters 2014-03-31 00:45:08 -04:00
nwfpe
oprofile
plat-iop ARM: 8000/1: misc: remove deprecated IRQF_DISABLED 2014-03-12 10:32:38 +00:00
plat-omap ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
plat-orion ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
plat-pxa
plat-samsung Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
plat-versatile
tools
vfp ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr 2014-04-25 12:06:38 +01:00
xen xen/grant-table: Refactor gnttab_[un]map_refs to avoid m2p_override 2014-03-18 14:40:19 +00:00
Kconfig ARM: 8047/1: rwsem: use asm-generic rwsem implementation 2014-05-30 01:12:25 +01:00
Kconfig-nommu
Kconfig.debug ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
Makefile ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00