Re: [PATCH v3] ftrace: Cleanup ftrace_dyn_arch_init()

From: Weizhao Ouyang
Date: Tue Sep 07 2021 - 23:52:54 EST


Thanks for reply.

On 2021/9/7 23:55, LEROY Christophe wrote:
>
>> -----Message d'origine-----
>> De : Linuxppc-dev <linuxppc-dev-
>> bounces+christophe.leroy=csgroup.eu@xxxxxxxxxxxxxxxx> De la part de Weizhao
>> Ouyang
>>
>> Most of ARCHs use empty ftrace_dyn_arch_init(), introduce a weak common
>> ftrace_dyn_arch_init() to cleanup them.
>>
>> Signed-off-by: Weizhao Ouyang <o451686892@xxxxxxxxx>
>> Acked-by: Heiko Carstens <hca@xxxxxxxxxxxxx> (s390)
>> Acked-by: Helge Deller <deller@xxxxxx> (parisc)
>>
>> ---
>> Changes in v3:
>> -- fix unrecognized opcode on PowerPC
>>
>> Changes in v2:
>> -- correct CONFIG_DYNAMIC_FTRACE on PowerPC
>> -- add Acked-by tag
>>
>> ---
>> arch/arm/kernel/ftrace.c | 5 -----
>> arch/arm64/kernel/ftrace.c | 5 -----
>> arch/csky/kernel/ftrace.c | 5 -----
>> arch/ia64/kernel/ftrace.c | 6 ------
>> arch/microblaze/kernel/ftrace.c | 5 -----
>> arch/mips/include/asm/ftrace.h | 2 ++
>> arch/nds32/kernel/ftrace.c | 5 -----
>> arch/parisc/kernel/ftrace.c | 5 -----
>> arch/powerpc/include/asm/ftrace.h | 4 ++++
>> arch/riscv/kernel/ftrace.c | 5 -----
>> arch/s390/kernel/ftrace.c | 5 -----
>> arch/sh/kernel/ftrace.c | 5 -----
>> arch/sparc/kernel/ftrace.c | 5 -----
>> arch/x86/kernel/ftrace.c | 5 -----
>> include/linux/ftrace.h | 1 -
>> kernel/trace/ftrace.c | 5 +++++
>> 16 files changed, 11 insertions(+), 62 deletions(-)
>>
>> diff --git a/arch/mips/include/asm/ftrace.h b/arch/mips/include/asm/ftrace.h
>> index b463f2aa5a61..ed013e767390 100644
>> --- a/arch/mips/include/asm/ftrace.h
>> +++ b/arch/mips/include/asm/ftrace.h
>> @@ -76,6 +76,8 @@ do { \
>>
>>
>> #ifdef CONFIG_DYNAMIC_FTRACE
>> +int __init ftrace_dyn_arch_init(void);
>> +
> Why ?
>
>
>> static inline unsigned long ftrace_call_adjust(unsigned long addr)
>> {
>> return addr;
>> diff --git a/arch/powerpc/include/asm/ftrace.h
>> b/arch/powerpc/include/asm/ftrace.h
>> index debe8c4f7062..b05c43f13a4d 100644
>> --- a/arch/powerpc/include/asm/ftrace.h
>> +++ b/arch/powerpc/include/asm/ftrace.h
>> @@ -126,6 +126,10 @@ static inline void this_cpu_enable_ftrace(void) { }
>> static inline void this_cpu_set_ftrace_enabled(u8 ftrace_enabled) { }
>> static inline u8 this_cpu_get_ftrace_enabled(void) { return 1; }
>> #endif /* CONFIG_PPC64 */
>> +
>> +#ifdef CONFIG_DYNAMIC_FTRACE
>> +int __init ftrace_dyn_arch_init(void);
>> +#endif /* CONFIG_DYNAMIC_FTRACE */
> Why ?
>
>> #endif /* !__ASSEMBLY__ */
>>
>> #endif /* _ASM_POWERPC_FTRACE */
>> diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
>> index 832e65f06754..f1eca123d89d 100644
>> --- a/include/linux/ftrace.h
>> +++ b/include/linux/ftrace.h
>> @@ -573,7 +573,6 @@ ftrace_set_early_filter(struct ftrace_ops *ops, char
>> *buf, int enable);
>>
>> /* defined in arch */
>> extern int ftrace_ip_converted(unsigned long ip);
>> -extern int ftrace_dyn_arch_init(void);
> Why removing that ?
>
> Have you tried to build kernel/trace/ftrace.o with C=2 ? It will likely tell you that the function is not declared and that it should be static

Yes I missed this check. Under the situation, the function should be static.

> We could eventually consider that in the past, this generic declaration was unrelevant because the definitions where in the arch specific sections.
> Now that you are implementing a generic weak version of this function, it would make sense to have a generic declaration as well.
>
> I really don't see the point in duplicating the declaration of the function in the arch specific headers.

I use declaration in arch specific headers in tend to clarify the arch has implement ftrace_dyn_arch_init().
Anyway, it maybe pointless, a generic declaration is enough. Will update it later.

>> extern void ftrace_replace_code(int enable);
>> extern int ftrace_update_ftrace_func(ftrace_func_t func);
>> extern void ftrace_caller(void);
> Christophe
>
> CS Group - Document Interne