diff mbox series

[v2,1/2] ftrace: cleanup ftrace_graph_caller enable and disable

Message ID 20220223090132.10114-1-zhouchengming@bytedance.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/2] ftrace: cleanup ftrace_graph_caller enable and disable | expand

Commit Message

Chengming Zhou Feb. 23, 2022, 9:01 a.m. UTC
The ftrace_enable_ftrace_graph_caller() and
ftrace_disable_ftrace_graph_caller() are used to do special
hooks for graph tracer, which are not needed on some ARCHs
when DYNAMIC_FTRACE_WITH_[ARGS,REGS] enabled. So introduce
weak version in Ftrace core code to cleanup them.

And fix the incorrect comment in that two #endif, which should
match the previous #ifdef and #ifndef.

Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
---
 arch/x86/kernel/ftrace.c | 14 ++------------
 kernel/trace/ftrace.c    | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 12 deletions(-)

Comments

Steven Rostedt Feb. 24, 2022, 1:17 a.m. UTC | #1
On Wed, 23 Feb 2022 17:01:31 +0800
Chengming Zhou <zhouchengming@bytedance.com> wrote:

> diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
> index 7cc540e6de0c..c119ef7a9295 100644
> --- a/arch/x86/kernel/ftrace.c
> +++ b/arch/x86/kernel/ftrace.c
> @@ -615,18 +615,8 @@ int ftrace_disable_ftrace_graph_caller(void)
>  
>  	return ftrace_mod_jmp(ip, &ftrace_stub);
>  }
> -#else /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
> -int ftrace_enable_ftrace_graph_caller(void)
> -{
> -	return 0;
> -}
> -
> -int ftrace_disable_ftrace_graph_caller(void)
> -{
> -	return 0;
> -}
> -#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
> -#endif /* !CONFIG_DYNAMIC_FTRACE */
> +#endif /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
> +#endif /* CONFIG_DYNAMIC_FTRACE */

Since you are cleaning this up, and the above starts with:

#ifdef CONFIG_DYNAMIC_FTRACE

#ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS


They were separate because of the #else that you just removed. I would
recommend consolidate them into a single #ifdef:

#if defined(CONFIG_DYNAMIC_FTRACE) && !defined(CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS)

[..]

#endif /* CONFIG_DYNAMIC_FTRACE && !CONFIG_HAVE_DYNAMI_FTRACE_WITH_ARGS */


-- Steve


>  
>  /*
>   * Hook the return address and push it in the stack of return addrs
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index f9feb197b2da..60ae009e6684 100644
Chengming Zhou Feb. 24, 2022, 2 a.m. UTC | #2
On 2022/2/24 9:17 上午, Steven Rostedt wrote:
> On Wed, 23 Feb 2022 17:01:31 +0800
> Chengming Zhou <zhouchengming@bytedance.com> wrote:
> 
>> diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
>> index 7cc540e6de0c..c119ef7a9295 100644
>> --- a/arch/x86/kernel/ftrace.c
>> +++ b/arch/x86/kernel/ftrace.c
>> @@ -615,18 +615,8 @@ int ftrace_disable_ftrace_graph_caller(void)
>>  
>>  	return ftrace_mod_jmp(ip, &ftrace_stub);
>>  }
>> -#else /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
>> -int ftrace_enable_ftrace_graph_caller(void)
>> -{
>> -	return 0;
>> -}
>> -
>> -int ftrace_disable_ftrace_graph_caller(void)
>> -{
>> -	return 0;
>> -}
>> -#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
>> -#endif /* !CONFIG_DYNAMIC_FTRACE */
>> +#endif /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
>> +#endif /* CONFIG_DYNAMIC_FTRACE */
> 
> Since you are cleaning this up, and the above starts with:
> 
> #ifdef CONFIG_DYNAMIC_FTRACE
> 
> #ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS
> 
> 
> They were separate because of the #else that you just removed. I would
> recommend consolidate them into a single #ifdef:
> 
> #if defined(CONFIG_DYNAMIC_FTRACE) && !defined(CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS)
> 
> [..]
> 
> #endif /* CONFIG_DYNAMIC_FTRACE && !CONFIG_HAVE_DYNAMI_FTRACE_WITH_ARGS */
> 

Good suggestion, this is better.

Thanks.

> 
> -- Steve
> 
> 
>>  
>>  /*
>>   * Hook the return address and push it in the stack of return addrs
>> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
>> index f9feb197b2da..60ae009e6684 100644
diff mbox series

Patch

diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c
index 7cc540e6de0c..c119ef7a9295 100644
--- a/arch/x86/kernel/ftrace.c
+++ b/arch/x86/kernel/ftrace.c
@@ -615,18 +615,8 @@  int ftrace_disable_ftrace_graph_caller(void)
 
 	return ftrace_mod_jmp(ip, &ftrace_stub);
 }
-#else /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
-int ftrace_enable_ftrace_graph_caller(void)
-{
-	return 0;
-}
-
-int ftrace_disable_ftrace_graph_caller(void)
-{
-	return 0;
-}
-#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
-#endif /* !CONFIG_DYNAMIC_FTRACE */
+#endif /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */
+#endif /* CONFIG_DYNAMIC_FTRACE */
 
 /*
  * Hook the return address and push it in the stack of return addrs
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index f9feb197b2da..60ae009e6684 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2704,6 +2704,26 @@  int __weak ftrace_arch_code_modify_post_process(void)
 	return 0;
 }
 
+#ifdef CONFIG_FUNCTION_GRAPH_TRACER
+/*
+ * archs can override this function if they must do something
+ * to enable hook for graph tracer.
+ */
+int __weak ftrace_enable_ftrace_graph_caller(void)
+{
+	return 0;
+}
+
+/*
+ * archs can override this function if they must do something
+ * to disable hook for graph tracer.
+ */
+int __weak ftrace_disable_ftrace_graph_caller(void)
+{
+	return 0;
+}
+#endif
+
 void ftrace_modify_all_code(int command)
 {
 	int update = command & FTRACE_UPDATE_TRACE_FUNC;