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 | ||