From: chenmiao <chenmiao...@gmail.com>

Hello erverone,

This patch contains basic ftrace support for OR1K platform.
Specifically, function tracer (HAVE_FUNCTION_TRACER), function graph
tracer (HAVE_FUNCTION_GRAPH_TRACER), and a frame pointer test
(HAVE_FUNCTION_GRAPH_FP_TEST) are implemented following the
instructions in Documentation/trace/ftrace-design.txt.

Below, I briefly explain why FTRACE_GRAPH was not enabled.

During testing, it was found that when fgraph is used with static ftrace,
it calls the ftrace_startup_subops function. This function is used by
register_ftrace_graph and always returns the EINVAL value in the case of
static ftrace. So, we disable the fgraph. *If re-initialization is attempted,
it may lead to severe consequences*, leading to the following issues:

[   76.040000] ------------[ cut here ]------------
[   76.040000] WARNING: CPU: 0 PID: 140 at kernel/trace/fgraph.c:1328 
register_ftrace_graph+0x750/0x7e4
[   76.040000] function graph ops registered again
[   76.040000] Modules linked in:
[   76.040000] CPU: 0 UID: 0 PID: 140 Comm: bash Not tainted 
6.17.0-rc3-00014-gda230ee3ff1c #1 NONE
[   76.040000] Call trace:
[   76.040000] [<0b43fbe5>] dump_stack_lvl+0x8c/0xc4
[   76.040000] [<d2655aeb>] ? register_ftrace_graph+0x750/0x7e4
[   76.040000] [<22405ca2>] dump_stack+0x1c/0x2c
[   76.040000] [<04b97f00>] __warn+0xcc/0x1ac
[   76.040000] [<d2655aeb>] ? register_ftrace_graph+0x750/0x7e4
[   76.040000] [<34636c77>] warn_slowpath_fmt+0x1e8/0x1f0
[   76.040000] [<d2655aeb>] register_ftrace_graph+0x750/0x7e4
[   76.040000] [<94bcf66b>] ? do_ftrace_graph_caller+0x2c/0x40
[   76.040000] [<863d51d0>] ? _raw_spin_unlock_irqrestore+0x3c/0x50
[   76.040000] [<5e3d7fcf>] graph_trace_init+0x60/0xa0
[   76.040000] [<239e8587>] tracing_set_tracer+0x180/0x29c
[   76.040000] [<0bedd84e>] ? mutex_unlock+0x24/0x80
[   76.040000] [<21c17ace>] tracing_set_trace_write+0xa4/0x118
[   76.040000] [<0d244535>] vfs_write+0x108/0x5ac
[   76.040000] [<94bcf66b>] ? do_ftrace_graph_caller+0x2c/0x40
[   76.040000] [<c15d06f8>] ? fdget_pos+0x20/0x210
[   76.040000] [<bc6b8897>] ksys_write+0x94/0x150
[   76.040000] [<06a3d204>] sys_write+0x38/0x4c
[   76.040000] [<2cd910fd>] ? _syscall_return+0x0/0x4
[   76.040000] ---[ end trace 0000000000000000 ]---

Thanks,

Chen Miao

chenmiao (1):
  openrisc: Add the basic static ftrace support

 arch/openrisc/Kconfig                   |   1 +
 arch/openrisc/configs/or1ksim_defconfig |   2 +-
 arch/openrisc/configs/virt_defconfig    |   1 +
 arch/openrisc/include/asm/ftrace.h      |  29 ++++
 arch/openrisc/kernel/Makefile           |   7 +
 arch/openrisc/kernel/entry-ftrace.S     | 185 ++++++++++++++++++++++++
 arch/openrisc/kernel/ftrace.c           |  35 +++++
 7 files changed, 259 insertions(+), 1 deletion(-)
 create mode 100644 arch/openrisc/include/asm/ftrace.h
 create mode 100644 arch/openrisc/kernel/entry-ftrace.S
 create mode 100644 arch/openrisc/kernel/ftrace.c

-- 
2.45.2


Reply via email to