aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ftrace.h
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2014-07-11 14:39:10 -0400
committerSteven Rostedt <rostedt@goodmis.org>2014-07-16 11:01:24 -0400
commit646d7043adf3d92de5d3db1244a82a12628303de (patch)
tree09d3ed9c379a06b0ba7ce9a2ec5173ba8a097b96 /include/linux/ftrace.h
parentca65ef1ab6b498b77985b9a3f5ab12c09bbf764e (diff)
ftrace: Allow archs to specify if they need a separate function graph trampoline
Currently if an arch supports function graph tracing, the core code will just assign the function graph trampoline to the function graph addr that gets called. But as the old method for function graph tracing always calls the function trampoline first and that calls the function graph trampoline, some archs may have the function graph trampoline dependent on operations that were done in the function trampoline. This causes function graph tracer to break on those archs. Instead of having the default be to set the function graph ftrace_ops to the function graph trampoline, have it instead just set it to zero which will keep it from jumping to a trampoline that is not set up to be jumped directly too. Link: http://lkml.kernel.org/r/53BED155.9040607@nvidia.com Reported-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com> Tested-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'include/linux/ftrace.h')
-rw-r--r--include/linux/ftrace.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 11e18fd58b1a..4807a39e7ae1 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -453,6 +453,16 @@ void ftrace_modify_all_code(int command);
453#endif 453#endif
454#endif 454#endif
455 455
456/*
457 * If an arch would like functions that are only traced
458 * by the function graph tracer to jump directly to its own
459 * trampoline, then they can define FTRACE_GRAPH_TRAMP_ADDR
460 * to be that address to jump to.
461 */
462#ifndef FTRACE_GRAPH_TRAMP_ADDR
463#define FTRACE_GRAPH_TRAMP_ADDR ((unsigned long) 0)
464#endif
465
456#ifdef CONFIG_FUNCTION_GRAPH_TRACER 466#ifdef CONFIG_FUNCTION_GRAPH_TRACER
457extern void ftrace_graph_caller(void); 467extern void ftrace_graph_caller(void);
458extern int ftrace_enable_ftrace_graph_caller(void); 468extern int ftrace_enable_ftrace_graph_caller(void);