diff options
| author | Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> | 2012-09-28 04:15:17 -0400 |
|---|---|---|
| committer | Steven Rostedt <rostedt@goodmis.org> | 2013-01-21 13:22:35 -0500 |
| commit | 06aeaaeabf69da4a3e86df532425640f51b01cef (patch) | |
| tree | e1ff9ec31435102d3f3ba665ce02de49879794f5 /kernel | |
| parent | 8741db532e86da2e54f05be751bfe1922ca63d57 (diff) | |
ftrace: Move ARCH_SUPPORTS_FTRACE_SAVE_REGS in Kconfig
Move SAVE_REGS support flag into Kconfig and rename
it to CONFIG_DYNAMIC_FTRACE_WITH_REGS. This also introduces
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS which indicates
the architecture depending part of ftrace has a code
that saves full registers.
On the other hand, CONFIG_DYNAMIC_FTRACE_WITH_REGS indicates
the code is enabled.
Link: http://lkml.kernel.org/r/20120928081516.3560.72534.stgit@ltc138.sdl.hitachi.co.jp
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/trace/Kconfig | 8 | ||||
| -rw-r--r-- | kernel/trace/ftrace.c | 6 | ||||
| -rw-r--r-- | kernel/trace/trace_selftest.c | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index 5d89335a485f..cdc9d284d24e 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig | |||
| @@ -39,6 +39,9 @@ config HAVE_DYNAMIC_FTRACE | |||
| 39 | help | 39 | help |
| 40 | See Documentation/trace/ftrace-design.txt | 40 | See Documentation/trace/ftrace-design.txt |
| 41 | 41 | ||
| 42 | config HAVE_DYNAMIC_FTRACE_WITH_REGS | ||
| 43 | bool | ||
| 44 | |||
| 42 | config HAVE_FTRACE_MCOUNT_RECORD | 45 | config HAVE_FTRACE_MCOUNT_RECORD |
| 43 | bool | 46 | bool |
| 44 | help | 47 | help |
| @@ -434,6 +437,11 @@ config DYNAMIC_FTRACE | |||
| 434 | were made. If so, it runs stop_machine (stops all CPUS) | 437 | were made. If so, it runs stop_machine (stops all CPUS) |
| 435 | and modifies the code to jump over the call to ftrace. | 438 | and modifies the code to jump over the call to ftrace. |
| 436 | 439 | ||
| 440 | config DYNAMIC_FTRACE_WITH_REGS | ||
| 441 | def_bool y | ||
| 442 | depends on DYNAMIC_FTRACE | ||
| 443 | depends on HAVE_DYNAMIC_FTRACE_WITH_REGS | ||
| 444 | |||
| 437 | config FUNCTION_PROFILER | 445 | config FUNCTION_PROFILER |
| 438 | bool "Kernel function profiler" | 446 | bool "Kernel function profiler" |
| 439 | depends on FUNCTION_TRACER | 447 | depends on FUNCTION_TRACER |
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 41473b4ad7a4..6e34dc162fe1 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -337,7 +337,7 @@ static int __register_ftrace_function(struct ftrace_ops *ops) | |||
| 337 | if ((ops->flags & FL_GLOBAL_CONTROL_MASK) == FL_GLOBAL_CONTROL_MASK) | 337 | if ((ops->flags & FL_GLOBAL_CONTROL_MASK) == FL_GLOBAL_CONTROL_MASK) |
| 338 | return -EINVAL; | 338 | return -EINVAL; |
| 339 | 339 | ||
| 340 | #ifndef ARCH_SUPPORTS_FTRACE_SAVE_REGS | 340 | #ifndef CONFIG_DYNAMIC_FTRACE_WITH_REGS |
| 341 | /* | 341 | /* |
| 342 | * If the ftrace_ops specifies SAVE_REGS, then it only can be used | 342 | * If the ftrace_ops specifies SAVE_REGS, then it only can be used |
| 343 | * if the arch supports it, or SAVE_REGS_IF_SUPPORTED is also set. | 343 | * if the arch supports it, or SAVE_REGS_IF_SUPPORTED is also set. |
| @@ -4143,8 +4143,8 @@ __ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip, | |||
| 4143 | * Archs are to support both the regs and ftrace_ops at the same time. | 4143 | * Archs are to support both the regs and ftrace_ops at the same time. |
| 4144 | * If they support ftrace_ops, it is assumed they support regs. | 4144 | * If they support ftrace_ops, it is assumed they support regs. |
| 4145 | * If call backs want to use regs, they must either check for regs | 4145 | * If call backs want to use regs, they must either check for regs |
| 4146 | * being NULL, or ARCH_SUPPORTS_FTRACE_SAVE_REGS. | 4146 | * being NULL, or CONFIG_DYNAMIC_FTRACE_WITH_REGS. |
| 4147 | * Note, ARCH_SUPPORT_SAVE_REGS expects a full regs to be saved. | 4147 | * Note, CONFIG_DYNAMIC_FTRACE_WITH_REGS expects a full regs to be saved. |
| 4148 | * An architecture can pass partial regs with ftrace_ops and still | 4148 | * An architecture can pass partial regs with ftrace_ops and still |
| 4149 | * set the ARCH_SUPPORT_FTARCE_OPS. | 4149 | * set the ARCH_SUPPORT_FTARCE_OPS. |
| 4150 | */ | 4150 | */ |
diff --git a/kernel/trace/trace_selftest.c b/kernel/trace/trace_selftest.c index 47623169a815..6c62d58d8e87 100644 --- a/kernel/trace/trace_selftest.c +++ b/kernel/trace/trace_selftest.c | |||
| @@ -568,7 +568,7 @@ trace_selftest_function_regs(void) | |||
| 568 | int ret; | 568 | int ret; |
| 569 | int supported = 0; | 569 | int supported = 0; |
| 570 | 570 | ||
| 571 | #ifdef ARCH_SUPPORTS_FTRACE_SAVE_REGS | 571 | #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS |
| 572 | supported = 1; | 572 | supported = 1; |
| 573 | #endif | 573 | #endif |
| 574 | 574 | ||
