Skip to content

powerpc/ftrace: refactor and add support for -fpatchable-function-entry

Naveen N Rao linuxppc-dev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest17 patches 21 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/17powerpc/ftrace: Fix dropping weak symbols with older toolchainsarch/powerpc/include/asm/ftrace.h+1 -11 reply
2/17powerpc/module: Remove unused .ftrace.tramp sectionarch/powerpc/include/asm/module.h+0 -41 reply
3/17powerpc64/ftrace: Move ELFv1 and -pg support code into a separate filearch/powerpc/kernel/trace/Makefile arch/powerpc/kernel/trace/ftrace.c arch/powerpc/kernel/trace/ftrace_pg.c+855 -141 reply
4/17powerpc/ftrace: Simplify function_graph support in ftrace.carch/powerpc/kernel/trace/ftrace.c+7 -571 reply
5/17powerpc/ftrace: Use FTRACE_REGS_ADDR to identify the correct ftrace trampolinearch/powerpc/kernel/trace/ftrace.c+1 -61 reply
6/17powerpc/ftrace: Extend ftrace support for large kernels to ppc32arch/powerpc/include/asm/ftrace.h arch/powerpc/include/asm/sections.h arch/powerpc/kernel/trace/ftrace.c +2 more+32 -291 reply
7/17powerpc/ftrace: Consolidate ftrace support into fewer filesarch/powerpc/kernel/trace/Makefile arch/powerpc/kernel/trace/ftrace_64_pg.S arch/powerpc/kernel/trace/ftrace_64_pg.c +2 more+130 -772 replies
8/17powerpc/ftrace: Refactor ftrace_modify_code()arch/powerpc/kernel/trace/ftrace.c+29 -221 reply
9/17powerpc/ftrace: Stop re-purposing linker generated long branches for ftracearch/powerpc/kernel/trace/ftrace.c+17 -931 reply
10/17powerpc/ftrace: Add separate ftrace_init_nop() with additional validationarch/powerpc/include/asm/ftrace.h arch/powerpc/kernel/trace/ftrace.c+77 -01 reply
11/17powerpc/ftrace: Simplify ftrace_make_nop()arch/powerpc/kernel/trace/ftrace.c+32 -1881 reply
12/17powerpc/ftrace: Simplify ftrace_make_call()arch/powerpc/kernel/trace/ftrace.c+31 -1561 reply
13/17powerpc/ftrace: Simplify ftrace_modify_call()arch/powerpc/kernel/trace/ftrace.c+21 -1401 reply
14/17powerpc/ftrace: Replace use of ftrace_call_replace() with ftrace_create_branch_inst()arch/powerpc/kernel/trace/ftrace.c+2 -151 reply
15/17powerpc/ftrace: Implement ftrace_replace_code()arch/powerpc/kernel/trace/ftrace.c+96 -771 reply
16/17powerpc/ftrace: Add support for -fpatchable-function-entryarch/powerpc/Kconfig arch/powerpc/Makefile arch/powerpc/include/asm/ftrace.h +5 more+64 -92 replies
17/17powerpc/ftrace: Create a dummy stackframe to fix stack unwindarch/powerpc/kernel/trace/ftrace.c arch/powerpc/kernel/trace/ftrace_entry.S+12 -52 replies

Reviews trailers per patch

All 17 patches have a Reviewed-by or Acked-by.

PatchChristophe Leroy
1/17R-b
2/17R-b
3/17R-b
4/17R-b
5/17R-b
6/17R-b
7/17R-b
8/17R-b
9/17R-b
10/17R-b
11/17R-b
12/17R-b
13/17R-b
14/17R-b
15/17R-b
16/17R-b
17/17R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH 00/17] powerpc/ftrace: refactor and add support for -fpatchable-function-entry

Since RFC (*):
- Patches 1 and 17 have been included in this series due to dependencies. Both had been posted out separately.
- Patch 10 has a small change to not throw errors when checking instruction sequence generated by older toolchains.

This has had more testing since and this looks good to me. Christophe mentioned that this results in a slowdown with ftrace [de-]activation on ppc32, but that isn't performance critical and we can address that separately.

(*) http://lore.kernel.org/[email protected]

- Naveen

Naveen N Rao (17):
powerpc/ftrace: Fix dropping weak symbols with older toolchains powerpc/module: Remove unused .ftrace.tramp section powerpc64/ftrace: Move ELFv1 and -pg support code into a separate file powerpc/ftrace: Simplify function_graph support in ftrace.c powerpc/ftrace: Use FTRACE_REGS_ADDR to identify the correct ftrace
trampoline
powerpc/ftrace: Extend ftrace support for large kernels to ppc32 powerpc/ftrace: Consolidate ftrace support into fewer files powerpc/ftrace: Refactor ftrace_modify_code() powerpc/ftrace: Stop re-purposing linker generated long branches for
ftrace
powerpc/ftrace: Add separate ftrace_init_nop() with additional
validation
powerpc/ftrace: Simplify ftrace_make_nop()
powerpc/ftrace: Simplify ftrace_make_call() powerpc/ftrace: Simplify ftrace_modify_call() powerpc/ftrace: Replace use of ftrace_call_replace() with
ftrace_create_branch_inst()
powerpc/ftrace: Implement ftrace_replace_code() powerpc/ftrace: Add support for -fpatchable-function-entry powerpc/ftrace: Create a dummy stackframe to fix stack unwind

 arch/powerpc/Kconfig                          |  14 +-
 arch/powerpc/Makefile                         |   5 +
 arch/powerpc/include/asm/ftrace.h             |  24 +-
 arch/powerpc/include/asm/module.h             |   4 -
 arch/powerpc/include/asm/sections.h           |   2 +
 arch/powerpc/include/asm/vermagic.h           |   4 +-
 arch/powerpc/kernel/module_64.c               |   2 +-
 arch/powerpc/kernel/trace/Makefile            |  12 +-
 arch/powerpc/kernel/trace/ftrace.c            | 910 +++++-------------
 arch/powerpc/kernel/trace/ftrace_64_pg.S      |  67 --
 arch/powerpc/kernel/trace/ftrace_64_pg.c      | 846 ++++++++++++++++
 .../{ftrace_low.S => ftrace_64_pg_entry.S}    |  64 +-
 .../{ftrace_mprofile.S => ftrace_entry.S}     |  78 +-
 arch/powerpc/kernel/vmlinux.lds.S             |   4 -
 .../gcc-check-fpatchable-function-entry.sh    |  26 +
 15 files changed, 1288 insertions(+), 774 deletions(-)
 delete mode 100644 arch/powerpc/kernel/trace/ftrace_64_pg.S
 create mode 100644 arch/powerpc/kernel/trace/ftrace_64_pg.c
 rename arch/powerpc/kernel/trace/{ftrace_low.S => ftrace_64_pg_entry.S} (54%)
 rename arch/powerpc/kernel/trace/{ftrace_mprofile.S => ftrace_entry.S} (79%)
 create mode 100755 arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh

base-commit: 12ffddc6444780aec83fa5086673ec005c0bace4

Signature · 1 line
2.40.1