From 37bfe952113ba7a87fa14e0e6a72a62ea7be292b Mon Sep 17 00:00:00 2001 From: chenmiao Date: Thu, 3 Jul 2025 08:48:18 +0000 Subject: [PATCH] riscv: ftrace: Fix the logic issue in DYNAMIC_FTRACE selection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When I was reading the source code of ftrace, I learned that ftrace has two types: static and dynamic. Initially, I planned to prioritize reading the static source code, so I disabled the enable dynamic option in RISCV. [*] Kernel Function Tracer [ ] Kernel Function Graph Tracer [ ] enable/disable function tracing dynamically (NEW) However, when I tried to compile it, the build failed. ./include/linux/ftrace.h:190:16: error: implicit declaration of function ‘arch_ftrace_get_regs’; did you mean ‘arch_ftrace_regs’? [-Wimplicit-function-declaration] 190 | return arch_ftrace_get_regs(fregs); | ^~~~~~~~~~~~~~~~~~~~ | arch_ftrace_regs After comparing it with the ARM64 architecture, I found that ARM64 automatically enables DYNAMIC_FTRACE by default once FUNCTION_TRACER is turned on, and this cannot be set to "no". Therefore, I believe the optional DYNAMIC_FTRACE setting in RISC-V has a logic flaw—if FUNCTION_TRACER is enabled, DYNAMIC_FTRACE should also be enabled, and vice versa. Moreover, it's clear that RISC-V lacks the necessary support to successfully compile the kernel when DYNAMIC_FTRACE is disabled. [*] Kernel Function Tracer [ ] Kernel Function Graph Tracer -*- enable/disable function tracing dynamically Signed-off-by: chenmiao Signed-off-by: Linux RISC-V bot --- arch/riscv/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index d71ea0f4466fc3..e4eb892504a947 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -98,6 +98,7 @@ config RISCV select CLONE_BACKWARDS select COMMON_CLK select CPU_PM if CPU_IDLE || HIBERNATION || SUSPEND + select DYNAMIC_FTRACE if FUNCTION_TRACER select EDAC_SUPPORT select FRAME_POINTER if PERF_EVENTS || (FUNCTION_TRACER && !DYNAMIC_FTRACE) select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY if DYNAMIC_FTRACE