lkml.org 
[lkml]   [2023]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH V10 0/4] riscv: Optimize function trace
    Song Shuai <suagrfillet@gmail.com> 于2023年5月16日周二 09:50写道:
    >
    > Song Shuai <suagrfillet@gmail.com> 于2023年5月11日周四 09:32写道:
    >
    > >
    > > Changes in v10:
    > >
    > > - add Acked-by from Björn Töpel in patch 2 and patch 4
    > > - replace `move` with `mv` in patch3
    > > - prettify patch 2/4 with proper tabs
    > >
    > > You can directly try it with:
    > >
    > > https://github.com/sugarfillet/linux/tree/6.4-rc1-rv-ftrace-v10
    > >
    > >
    > Hi, plamer:
    > This series is ready for its acceptance, you can pick it up.
    >
    Apologize for the typo in your name, Palmer.

    > > This series optimizes function trace. The first 3 independent
    > > patches has been picked in the V7 version of this series, the
    > > subsequent version continues the following 4 patches:
    > >
    > > select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY [1] (patch 1)
    > > ==========================================================
    > >
    > > In RISC-V, -fpatchable-function-entry option is used to support
    > > dynamic ftrace in this commit afc76b8b8011 ("riscv: Using
    > > PATCHABLE_FUNCTION_ENTRY instead of MCOUNT"). So recordmcount
    > > don't have to be called to create the __mcount_loc section before
    > > the vmlinux linking.
    > >
    > > Here selects FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY to tell
    > > Makefile not to run recordmcount.
    > >
    > > Make function graph use ftrace directly [2] (patch 2)
    > > ========================================================
    > >
    > > In RISC-V architecture, when we enable the ftrace_graph tracer on some
    > > functions, the function tracings on other functions will suffer extra
    > > graph tracing work. In essence, graph_ops isn't limited by its func_hash
    > > due to the global ftrace_graph_[regs]_call label. That should be
    > > corrected.
    > >
    > > What inspires me is the commit 0c0593b45c9b ("x86/ftrace: Make function
    > > graph use ftrace directly") that uses graph_ops::func function to
    > > install return_hooker and makes the function called against its
    > > func_hash.
    > >
    > > Add WITH_DIRECT_CALLS support [3] (patch 3, 4)
    > > ==============================================
    > >
    > > This series adds DYNAMIC_FTRACE_WITH_DIRECT_CALLS support for RISC-V.
    > > SAMPLE_FTRACE_DIRECT and SAMPLE_FTRACE_DIRECT_MULTI are also included
    > > here as the samples for testing DIRECT_CALLS related interface.
    > >
    > > First, select the DYNAMIC_FTRACE_WITH_DIRECT_CALLS to provide
    > > register_ftrace_direct[_multi] interfaces allowing user 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 modify direct_caller.
    > >
    > > At the same time, the samples in ./samples/ftrace/ can be built
    > > as kerenl module for testing these interfaces with SAMPLE_FTRACE_DIRECT
    > > and SAMPLE_FTRACE_DIRECT_MULTI selected.
    > >
    > > Second, to make the direct_caller and the other ftrace hooks
    > > (eg. function/fgraph tracer, k[ret]probes) co-exist, a temporary
    > > register
    > > are 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.
    > >
    > > The series's old changes related these patches
    > > ==========================================
    > >
    > > Changes in v9:
    > > https://lore.kernel.org/linux-riscv/20230510101857.2953955-1-suagrfillet@gmail.com/
    > >
    > > 1. add Acked-by from Björn Töpel in patch 1
    > >
    > > 2. rebase patch2/patch3 on Linux v6.4-rc1
    > >
    > > - patch 2: to make the `SAVE_ABI_REGS` configurable, revert the
    > > modification of mcount-dyn.S from commit (45b32b946a97 "riscv:
    > > entry: Consolidate general regs saving/restoring")
    > >
    > > - patch 3: to pass the trace_selftest, add the implement of
    > > `ftrace_stub_direct_tramp` from commit (fee86a4ed536 "ftrace:
    > > selftest: remove broken trace_direct_tramp") ; and fixup the context
    > > conflict in Kconfig
    > >
    > > Changes in v8:
    > > https://lore.kernel.org/linux-riscv/20230324033342.3177979-1-suagrfillet@gmail.com/
    > > - Fix incorrect address values in the 4nd patch
    > > - Rebased on v6.3-rc2
    > >
    > > Changes in v7:
    > > https://lore.kernel.org/linux-riscv/20230112090603.1295340-1-guoren@kernel.org/
    > > - Fixup RESTORE_ABI_REGS by remove PT_T0(sp) overwrite.
    > > - Add FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY [1]
    > > - Fixup kconfig with HAVE_SAMPLE_FTRACE_DIRECT &
    > > HAVE_SAMPLE_FTRACE_DIRECT_MULTI
    > >
    > > Changes in v6:
    > > https://lore.kernel.org/linux-riscv/20230107133549.4192639-1-guoren@kernel.org/
    > > - Replace 8 with MCOUNT_INSN_SIZE
    > > - Replace "REG_L a1, PT_RA(sp)" with "mv a1, ra"
    > > - Add Evgenii Shatokhin comment
    > >
    > > Changes in v5:
    > > https://lore.kernel.org/linux-riscv/20221208091244.203407-1-guoren@kernel.org/
    > > - Sort Kconfig entries in alphabetical order.
    > >
    > > Changes in v4:
    > > https://lore.kernel.org/linux-riscv/20221129033230.255947-1-guoren@kernel.org/
    > > - Include [3] for maintenance. [Song Shuai]
    > >
    > > Changes in V3:
    > > https://lore.kernel.org/linux-riscv/20221123153950.2911981-1-guoren@kernel.org/
    > > - Include [2] for maintenance. [Song Shuai]
    > >
    > > [1]: https://lore.kernel.org/linux-riscv/CAAYs2=j3Eak9vU6xbAw0zPuoh00rh8v5C2U3fePkokZFibWs2g@mail.gmail.com/T/#t
    > > [2]: https://lore.kernel.org/lkml/20221120084230.910152-1-suagrfillet@gmail.com/
    > > [3]: https://lore.kernel.org/linux-riscv/20221123142025.1504030-1-suagrfillet@gmail.com/
    > >
    > > Song Shuai (4):
    > > riscv: select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY
    > > riscv: ftrace: Add ftrace_graph_func
    > > riscv: ftrace: Add DYNAMIC_FTRACE_WITH_DIRECT_CALLS support
    > > samples: ftrace: Add riscv support for SAMPLE_FTRACE_DIRECT[_MULTI]
    > >
    > > arch/riscv/Kconfig | 4 +
    > > arch/riscv/include/asm/ftrace.h | 19 +-
    > > arch/riscv/kernel/ftrace.c | 30 ++-
    > > arch/riscv/kernel/mcount-dyn.S | 200 ++++++++++++++++----
    > > samples/ftrace/ftrace-direct-modify.c | 34 ++++
    > > samples/ftrace/ftrace-direct-multi-modify.c | 40 ++++
    > > samples/ftrace/ftrace-direct-multi.c | 24 +++
    > > samples/ftrace/ftrace-direct-too.c | 27 +++
    > > samples/ftrace/ftrace-direct.c | 23 +++
    > > 9 files changed, 345 insertions(+), 56 deletions(-)
    > >
    > > --
    > > 2.20.1
    > >
    >
    >
    > --
    > Thanks,
    > Song



    --
    Thanks,
    Song

    \
     
     \ /
      Last update: 2023-05-17 13:10    [W:3.840 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site