[PATCH V4 6/7] riscv: ftrace: Add DYNAMIC_FTRACE_WITH_DIRECT_CALLS support
Palmer Dabbelt
palmer at dabbelt.com
Thu Dec 1 12:06:39 PST 2022
On Thu, 01 Dec 2022 12:02:56 PST (-0800), Conor Dooley wrote:
> On Mon, Nov 28, 2022 at 10:32:29PM -0500, guoren at kernel.org wrote:
>> From: Song Shuai <suagrfillet at gmail.com>
>>
>> This patch adds DYNAMIC_FTRACE_WITH_DIRECT_CALLS support for RISC-V.
>>
>> select the DYNAMIC_FTRACE_WITH_DIRECT_CALLS to provide the
>> register_ftrace_direct[_multi] interfaces allowing users to register
>> the customed trampoline (direct_caller) as the mcount for one or
>> more target functions. And modify_ftrace_direct[_multi] are also
>> provided for modifying direct_caller.
>>
>> To make the direct_caller and the other ftrace hooks (eg. function/fgraph
>> tracer, k[ret]probes) co-exist, a temporary register is nominated to
>> store the address of direct_caller in ftrace_regs_caller. After the
>> setting of the address direct_caller by direct_ops->func and the
>> RESTORE_REGS in ftrace_regs_caller, direct_caller will be jumped to
>> by the `jr` inst.
>>
>> Signed-off-by: Song Shuai <suagrfillet at gmail.com>
>> Tested-by: Guo Ren <guoren at kernel.org>
>> Signed-off-by: Guo Ren <guoren at kernel.org>
>> ---
>> arch/riscv/Kconfig | 1 +
>> arch/riscv/include/asm/ftrace.h | 6 ++++++
>> arch/riscv/kernel/mcount-dyn.S | 4 ++++
>> 3 files changed, 11 insertions(+)
>>
>> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
>> index 1d0e5838b11b..2828537abfcd 100644
>> --- a/arch/riscv/Kconfig
>> +++ b/arch/riscv/Kconfig
>> @@ -278,6 +278,7 @@ config ARCH_RV64I
>> select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
>> select HAVE_DYNAMIC_FTRACE if !XIP_KERNEL && MMU && $(cc-option,-fpatchable-function-entry=8)
>> select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE
>> + select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS
>> select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL
>> select HAVE_FUNCTION_GRAPH_TRACER
>> select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION
>
> Please sort new entries here in alphabetical order, so move the new
> entry up by one line :)
IIRC whomever sorted these entrties orignially posted a script that does
that. Maybe that should be integrated into either checkpatch or one of
the patchwork robots so we don't have to manually remember the alphabet?
More information about the linux-riscv
mailing list