diff options
Diffstat (limited to 'kernel/trace')
| -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 | ||
