Skip to content

ftrace updates for tip, and ground work for other architectures

Steven Rostedt lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest5 patches 1 replyIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5ftrace: replace raw_local_irq_save with local_irq_savekernel/trace/trace.c kernel/trace/trace_selftest.c+4 -40 replies
2/5ftrace: pass module struct to arch dynamic ftrace functionsarch/x86/include/asm/ftrace.h arch/x86/kernel/ftrace.c include/linux/ftrace.h +2 more+100 -540 replies
3/5ftrace: allow NULL pointers in mcount_lockernel/trace/ftrace.c+8 -00 replies
4/5ftrace: fix dyn ftrace filterkernel/trace/ftrace.c+36 -470 replies
5/5ftrace: make filtered functions effective on settingkernel/trace/ftrace.c+1 -10 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/5] ftrace updates for tip, and ground work for other architectures

Ingo,

Patch 2 is a change in dynamic ftrace interface between the generic code and the arch dependent code. The original code did not allow for the flexibility to handle some architecture limitations. I ran into this when trying to port to PPC32 and realized that the modules used trampolines to make the jumps to mcount.

I have successfully ported PPC64 and PPC32 and will send those patches out later. But this patch series sets up the ground work for other architectures to port dynamic ftrace.

The main changes to the code is:

1) I removed the ftarce_modify_code and replaced it with two functions:
ftrace_make_nop() and ftrace_make_call. The former converts the code into a nop. The later converts a nop into a call.

2) instead of passing just the address and expected and replace in I pass in the dynamic ftrace record itself. This allows the architecture code save data per record if needed. To do this, there is now a dyn_arch_ftrace structure in the dyn_ftrace record.

3) On intialization, ftrace_make_nop gets passed in the module that created it or NULL if it is core kernel code. This allows the archicecture code do special things for modules, and also use the module sturcture to store data for later use with the conversions.

The following patches are in:

git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git

branch: tip/devel

Steven Rostedt (5):
ftrace: replace raw_local_irq_save with local_irq_save
ftrace: pass module struct to arch dynamic ftrace functions
ftrace: allow NULL pointers in mcount_loc
ftrace: fix dyn ftrace filter
ftrace: make filtered functions effective on setting

----

 arch/x86/include/asm/ftrace.h |    8 ++
 arch/x86/kernel/ftrace.c      |   29 +++++++-
 include/linux/ftrace.h        |   53 +++++++++++----
 kernel/module.c               |    2 +-
 kernel/trace/ftrace.c         |  147 ++++++++++++++++++-----------------------
 kernel/trace/trace.c          |    4 +-
 kernel/trace/trace_selftest.c |    4 +-
 7 files changed, 145 insertions(+), 102 deletions(-)