<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 3, 2021 at 3:18 PM Weizhao Ouyang <<a href="mailto:o451686892@gmail.com">o451686892@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Most ARCHs use empty ftrace_dyn_arch_init(), introduce a weak common<br>
ftrace_dyn_arch_init() to cleanup them.<br>
<br>
Signed-off-by: Weizhao Ouyang <<a href="mailto:o451686892@gmail.com" target="_blank">o451686892@gmail.com</a>><br>
---<br>
 arch/arm/kernel/ftrace.c          | 5 -----<br>
 arch/arm64/kernel/ftrace.c        | 5 -----<br>
 arch/csky/kernel/ftrace.c         | 5 -----<br>
 arch/ia64/kernel/ftrace.c         | 6 ------<br>
 arch/microblaze/kernel/ftrace.c   | 5 -----<br>
 arch/mips/include/asm/ftrace.h    | 2 ++<br>
 arch/nds32/kernel/ftrace.c        | 5 -----<br>
 arch/parisc/kernel/ftrace.c       | 5 -----<br>
 arch/powerpc/include/asm/ftrace.h | 4 ++++<br>
 arch/riscv/kernel/ftrace.c        | 5 -----<br>
 arch/s390/kernel/ftrace.c         | 5 -----<br>
 arch/sh/kernel/ftrace.c           | 5 -----<br>
 arch/sparc/kernel/ftrace.c        | 5 -----<br>
 arch/x86/kernel/ftrace.c          | 5 -----<br>
 include/linux/ftrace.h            | 1 -<br>
 kernel/trace/ftrace.c             | 5 +++++<br>
 16 files changed, 11 insertions(+), 62 deletions(-)<br>
<br>
diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c<br>
index 3c83b5d29697..a006585e1c09 100644<br>
--- a/arch/arm/kernel/ftrace.c<br>
+++ b/arch/arm/kernel/ftrace.c<br>
@@ -193,11 +193,6 @@ int ftrace_make_nop(struct module *mod,<br>
<br>
        return ret;<br>
 }<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 #endif /* CONFIG_DYNAMIC_FTRACE */<br>
<br>
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER<br>
diff --git a/arch/arm64/kernel/ftrace.c b/arch/arm64/kernel/ftrace.c<br>
index 7f467bd9db7a..fc62dfe73f93 100644<br>
--- a/arch/arm64/kernel/ftrace.c<br>
+++ b/arch/arm64/kernel/ftrace.c<br>
@@ -236,11 +236,6 @@ void arch_ftrace_update_code(int command)<br>
        command |= FTRACE_MAY_SLEEP;<br>
        ftrace_modify_all_code(command);<br>
 }<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 #endif /* CONFIG_DYNAMIC_FTRACE */<br>
<br>
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER<br>
diff --git a/arch/csky/kernel/ftrace.c b/arch/csky/kernel/ftrace.c<br>
index b4a7ec1517ff..50bfcf129078 100644<br>
--- a/arch/csky/kernel/ftrace.c<br>
+++ b/arch/csky/kernel/ftrace.c<br>
@@ -133,11 +133,6 @@ int ftrace_update_ftrace_func(ftrace_func_t func)<br>
                                (unsigned long)func, true, true);<br>
        return ret;<br>
 }<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 #endif /* CONFIG_DYNAMIC_FTRACE */<br>
<br>
 #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS<br>
diff --git a/arch/ia64/kernel/ftrace.c b/arch/ia64/kernel/ftrace.c<br>
index b2ab2d58fb30..d6360fd404ab 100644<br>
--- a/arch/ia64/kernel/ftrace.c<br>
+++ b/arch/ia64/kernel/ftrace.c<br>
@@ -194,9 +194,3 @@ int ftrace_update_ftrace_func(ftrace_func_t func)<br>
        flush_icache_range(addr, addr + 16);<br>
        return 0;<br>
 }<br>
-<br>
-/* run from kstop_machine */<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
diff --git a/arch/microblaze/kernel/ftrace.c b/arch/microblaze/kernel/ftrace.c<br>
index 224eea40e1ee..188749d62709 100644<br>
--- a/arch/microblaze/kernel/ftrace.c<br>
+++ b/arch/microblaze/kernel/ftrace.c<br>
@@ -163,11 +163,6 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)<br>
        return ret;<br>
 }<br>
<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
-<br>
 int ftrace_update_ftrace_func(ftrace_func_t func)<br>
 {<br>
        unsigned long ip = (unsigned long)(&ftrace_call);<br>
diff --git a/arch/mips/include/asm/ftrace.h b/arch/mips/include/asm/ftrace.h<br>
index b463f2aa5a61..ed013e767390 100644<br>
--- a/arch/mips/include/asm/ftrace.h<br>
+++ b/arch/mips/include/asm/ftrace.h<br>
@@ -76,6 +76,8 @@ do {                                          \<br>
<br>
<br>
 #ifdef CONFIG_DYNAMIC_FTRACE<br>
+int __init ftrace_dyn_arch_init(void);<br>
+<br>
 static inline unsigned long ftrace_call_adjust(unsigned long addr)<br>
 {<br>
        return addr;<br>
diff --git a/arch/nds32/kernel/ftrace.c b/arch/nds32/kernel/ftrace.c<br>
index 0e23e3a8df6b..f0ef4842d191 100644<br>
--- a/arch/nds32/kernel/ftrace.c<br>
+++ b/arch/nds32/kernel/ftrace.c<br>
@@ -84,11 +84,6 @@ void _ftrace_caller(unsigned long parent_ip)<br>
        /* restore all state needed by the compiler epilogue */<br>
 }<br>
<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
-<br>
 static unsigned long gen_sethi_insn(unsigned long addr)<br>
 {<br>
        unsigned long opcode = 0x46000000;<br>
diff --git a/arch/parisc/kernel/ftrace.c b/arch/parisc/kernel/ftrace.c<br>
index 0a1e75af5382..01581f715737 100644<br>
--- a/arch/parisc/kernel/ftrace.c<br>
+++ b/arch/parisc/kernel/ftrace.c<br>
@@ -94,11 +94,6 @@ int ftrace_disable_ftrace_graph_caller(void)<br>
 #endif<br>
<br>
 #ifdef CONFIG_DYNAMIC_FTRACE<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 int ftrace_update_ftrace_func(ftrace_func_t func)<br>
 {<br>
        return 0;<br>
diff --git a/arch/powerpc/include/asm/ftrace.h b/arch/powerpc/include/asm/ftrace.h<br>
index debe8c4f7062..4db83cf4283f 100644<br>
--- a/arch/powerpc/include/asm/ftrace.h<br>
+++ b/arch/powerpc/include/asm/ftrace.h<br>
@@ -61,6 +61,10 @@ struct dyn_arch_ftrace {<br>
 };<br>
 #endif /* __ASSEMBLY__ */<br>
<br>
+#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS<br>
+int __init ftrace_dyn_arch_init(void);<br>
+#endif<br>
+<br></blockquote><div><br></div><div>Sorry there is a mistake CONFIG, I will send a v2 patch later.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS<br>
 #define ARCH_SUPPORTS_FTRACE_OPS 1<br>
 #endif<br>
diff --git a/arch/riscv/kernel/ftrace.c b/arch/riscv/kernel/ftrace.c<br>
index 7f1e5203de88..4716f4cdc038 100644<br>
--- a/arch/riscv/kernel/ftrace.c<br>
+++ b/arch/riscv/kernel/ftrace.c<br>
@@ -154,11 +154,6 @@ int ftrace_update_ftrace_func(ftrace_func_t func)<br>
<br>
        return ret;<br>
 }<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 #endif<br>
<br>
 #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS<br>
diff --git a/arch/s390/kernel/ftrace.c b/arch/s390/kernel/ftrace.c<br>
index 0a464d328467..3fd80397ff52 100644<br>
--- a/arch/s390/kernel/ftrace.c<br>
+++ b/arch/s390/kernel/ftrace.c<br>
@@ -262,11 +262,6 @@ int ftrace_update_ftrace_func(ftrace_func_t func)<br>
        return 0;<br>
 }<br>
<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
-<br>
 void arch_ftrace_update_code(int command)<br>
 {<br>
        if (ftrace_shared_hotpatch_trampoline(NULL))<br>
diff --git a/arch/sh/kernel/ftrace.c b/arch/sh/kernel/ftrace.c<br>
index 295c43315bbe..930001bb8c6a 100644<br>
--- a/arch/sh/kernel/ftrace.c<br>
+++ b/arch/sh/kernel/ftrace.c<br>
@@ -252,11 +252,6 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)<br>
<br>
        return ftrace_modify_code(rec->ip, old, new);<br>
 }<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 #endif /* CONFIG_DYNAMIC_FTRACE */<br>
<br>
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER<br>
diff --git a/arch/sparc/kernel/ftrace.c b/arch/sparc/kernel/ftrace.c<br>
index 684b84ce397f..eaead3da8e03 100644<br>
--- a/arch/sparc/kernel/ftrace.c<br>
+++ b/arch/sparc/kernel/ftrace.c<br>
@@ -82,11 +82,6 @@ int ftrace_update_ftrace_func(ftrace_func_t func)<br>
        new = ftrace_call_replace(ip, (unsigned long)func);<br>
        return ftrace_modify_code(ip, old, new);<br>
 }<br>
-<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
 #endif<br>
<br>
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER<br>
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c<br>
index 1b3ce3b4a2a2..23d221a9a3cd 100644<br>
--- a/arch/x86/kernel/ftrace.c<br>
+++ b/arch/x86/kernel/ftrace.c<br>
@@ -252,11 +252,6 @@ void arch_ftrace_update_code(int command)<br>
        ftrace_modify_all_code(command);<br>
 }<br>
<br>
-int __init ftrace_dyn_arch_init(void)<br>
-{<br>
-       return 0;<br>
-}<br>
-<br>
 /* Currently only x86_64 supports dynamic trampolines */<br>
 #ifdef CONFIG_X86_64<br>
<br>
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h<br>
index 832e65f06754..f1eca123d89d 100644<br>
--- a/include/linux/ftrace.h<br>
+++ b/include/linux/ftrace.h<br>
@@ -573,7 +573,6 @@ ftrace_set_early_filter(struct ftrace_ops *ops, char *buf, int enable);<br>
<br>
 /* defined in arch */<br>
 extern int ftrace_ip_converted(unsigned long ip);<br>
-extern int ftrace_dyn_arch_init(void);<br>
 extern void ftrace_replace_code(int enable);<br>
 extern int ftrace_update_ftrace_func(ftrace_func_t func);<br>
 extern void ftrace_caller(void);<br>
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c<br>
index 7efbc8aaf7f6..4c090323198d 100644<br>
--- a/kernel/trace/ftrace.c<br>
+++ b/kernel/trace/ftrace.c<br>
@@ -6846,6 +6846,11 @@ void __init ftrace_free_init_mem(void)<br>
        ftrace_free_mem(NULL, start, end);<br>
 }<br>
<br>
+int __init __weak ftrace_dyn_arch_init(void)<br>
+{<br>
+       return 0;<br>
+}<br>
+<br>
 void __init ftrace_init(void)<br>
 {<br>
        extern unsigned long __start_mcount_loc[];<br>
-- <br>
2.30.2<br>
<br></blockquote><div><br></div><div>Thanks. </div></div></div>