[RFC PATCH 0/9] powerpc: ftrace updates

From: Naveen N Rao
Date: Fri Dec 08 2023 - 11:35:13 EST


Early RFC.

This series attempts to address couple of issues with the existing
support for ftrace on powerpc, with a view towards improving performance
when ftrace is not enabled. See patch 6 for more details.

Patches 7 and 8 implement support for ftrace direct calls, through
adding support for DYNAMIC_FTRACE_WITH_CALL_OPS.

The first 5 patches are minor cleanups and updates, and can go in
separately.

This series depends on Benjamin Gray's series adding support for
patch_ulong().

I have lightly tested this patch set and it looks to be working well. As
described in patch 6, context_switch microbenchmark shows an improvement
of ~6% with this series with ftrace disabled. Performance when ftrace is
enabled reduces due to how DYNAMIC_FTRACE_WITH_CALL_OPS works, and due
to support for direct calls. Some of that can hopefully be improved, if
this approach is otherwise ok.

- Naveen



Naveen N Rao (8):
powerpc/ftrace: Fix indentation in ftrace.h
powerpc/ftrace: Unify 32-bit and 64-bit ftrace entry code
powerpc/ftrace: Remove nops after the call to ftrace_stub
powerpc/kprobes: Use ftrace to determine if a probe is at function
entry
powerpc/ftrace: Update and move function profile instructions
out-of-line
powerpc/ftrace: Add support for DYNAMIC_FTRACE_WITH_CALL_OPS
powerpc/ftrace: Add support for DYNAMIC_FTRACE_WITH_DIRECT_CALLS
samples/ftrace: Add support for ftrace direct samples on powerpc

Sathvika Vasireddy (1):
powerpc/Kconfig: Select FUNCTION_ALIGNMENT_4B

arch/powerpc/Kconfig | 6 +
arch/powerpc/Makefile | 6 +-
arch/powerpc/include/asm/code-patching.h | 15 +-
arch/powerpc/include/asm/ftrace.h | 35 ++-
arch/powerpc/include/asm/linkage.h | 3 -
arch/powerpc/kernel/asm-offsets.c | 7 +
arch/powerpc/kernel/kprobes.c | 69 +++++-
arch/powerpc/kernel/trace/ftrace.c | 231 ++++++++++++++++----
arch/powerpc/kernel/trace/ftrace_entry.S | 182 +++++++++++----
samples/ftrace/ftrace-direct-modify.c | 94 +++++++-
samples/ftrace/ftrace-direct-multi-modify.c | 110 +++++++++-
samples/ftrace/ftrace-direct-multi.c | 64 +++++-
samples/ftrace/ftrace-direct-too.c | 72 +++++-
samples/ftrace/ftrace-direct.c | 61 +++++-
14 files changed, 845 insertions(+), 110 deletions(-)


base-commit: 9a15ae60f2c9707433b01e55815cd9142be102b2
prerequisite-patch-id: 38d3e705bf2e27cfa5e3ba369a6ded84ba6615c2
prerequisite-patch-id: 609d292e054b2396b603890522a940fa0bdfb6d8
prerequisite-patch-id: 6f7213fb77b1260defbf43be0e47bff9c80054cc
prerequisite-patch-id: f2328625ae2193c3c8e336b154b62030940cece8
--
2.43.0