Skip to content

ftrace with regs + live patching for ppc64 LE (ABI v2)

Torsten Duwe linuxppc-dev lkml 9 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v8 Latest8 patches 35 repliesIn review
  2. v79 of 10 patches 15 repliesSuperseded
  3. v69 patches 32 repliesSuperseded
Earlier versions · 6
VersionPostedPatchesRepliesStatus
v59 patches12 repliesSuperseded
v49 patches14 repliesSuperseded
v38 patches1 replySuperseded
v24 patches0 repliesSuperseded
v1 posting 2/20 of 4 patches8 repliesSuperseded
v1 posting 1/24 patches3 repliesSuperseded

Changes in v8 from the cover letter

* drop "notrace" attribute for MMU-aiding functions and their callees.
* merge "-mprofile-kernel"-stripping patches into one.

Patches in v8 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8ppc64 (le): prepare for -mprofile-kernelarch/powerpc/include/asm/code-patching.h arch/powerpc/kernel/entry_64.S arch/powerpc/kernel/ftrace.c +1 more+133 -143 replies
2/8ppc64le FTRACE_WITH_REGS implementationarch/powerpc/include/asm/ftrace.h arch/powerpc/kernel/entry_64.S arch/powerpc/kernel/ftrace.c +1 more+165 -70 replies
3/8ppc use ftrace_modify_all_code defaultarch/powerpc/kernel/ftrace.c+4 -120 replies
4/8ppc64 ftrace_with_regs configuration variablesarch/powerpc/Kconfig arch/powerpc/Makefile arch/powerpc/gcc-mprofile-kernel-notrace.sh +2 more+62 -014 replies
5/8ppc64 ftrace_with_regs: disable profiling for some filesarch/powerpc/kernel/Makefile arch/powerpc/lib/Makefile+8 -80 replies
6/8Implement kernel live patching for ppc64le (ABIv2)arch/powerpc/include/asm/livepatch.h arch/powerpc/kernel/entry_64.S arch/powerpc/kernel/livepatch.c+130 -41 reply
7/8Enable LIVEPATCH to be configured on ppc64le and add livepatch.o if it is selectedarch/powerpc/Kconfig arch/powerpc/kernel/Makefile+4 -00 replies
8/8livepatch: Detect offset for the ftrace location during buildarch/powerpc/Kconfig arch/s390/Kconfig kernel/livepatch/Makefile +4 more+50 -615 replies

Reviews trailers per patch

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

Read the v8 thread

Cover letter [PATCH v8 0/8] ftrace with regs + live patching for ppc64 LE (ABI v2)

Changes since V7:
* drop "notrace" attribute for MMU-aiding functions and their callees.
* merge "-mprofile-kernel"-stripping patches into one.

Changes since v6:
* include Petr's patch, on popular demand ;)
* move #ifdefs out of functions for readability; introduce static helper functions instead.
* No more literal binary instructions in hex,
at least not added by this patch set.
* add compile time checker to detect the presence
of known-good -mprofile-kernel support.
* limit Kconfig / compile to the configurations really supported:
+ (static) FTRACE with -pg
+ DYNAMIC_FTRACE with -pg with or without -mprofile-kernel (depending on the compiler)
+ DYNAMIC_FTRACE_WITH_REGS only with -mprofile-kernel (will error out if the compiler is broken)

Changes since v5:
* extra "std r0,LRSAVE(r1)" for gcc-6
This makes the code compiler-agnostic.
* Follow Petr Mladek's suggestion to avoid
redefinition of HAVE_LIVEPATCH

Changes since v4:
* change comment style in entry_64.S to C89 (nobody is using assembler syntax comments there).
* the bool function restore_r2 shouldn't return 2, that's a little confusing.
* Test whether the compiler supports -mprofile-kernel and only then define CC_USING_MPROFILE_KERNEL
* also make the return value of klp_check_compiler_support depend on that.

Major changes since v3:
* the graph tracer works now.
It turned out the stack frame it tried to manipulate does not exist at that point.
* changes only needed in order to support -mprofile-kernel are now in a separate patch, prepended.
* Kconfig cleanup so this is only selectable on ppc64le.

Petr Mladek (1):
livepatch: Detect offset for the ftrace location during build

Torsten Duwe (7):
ppc64 (le): prepare for -mprofile-kernel
ppc64le FTRACE_WITH_REGS implementation
ppc use ftrace_modify_all_code default
ppc64 ftrace_with_regs configuration variables
ppc64 ftrace_with_regs: disable profiling for some files Implement kernel live patching for ppc64le (ABIv2)
Enable LIVEPATCH to be configured on ppc64le and add livepatch.o if it
is selected

 arch/powerpc/Kconfig                        |   6 +
 arch/powerpc/Makefile                       |  17 +++
 arch/powerpc/gcc-mprofile-kernel-notrace.sh |  33 ++++++
 arch/powerpc/include/asm/code-patching.h    |  24 ++++
 arch/powerpc/include/asm/ftrace.h           |   5 +
 arch/powerpc/include/asm/livepatch.h        |  45 ++++++++
 arch/powerpc/kernel/Makefile                |  13 ++-
 arch/powerpc/kernel/entry_64.S              | 169 +++++++++++++++++++++++++++-
 arch/powerpc/kernel/ftrace.c                | 129 ++++++++++++++++-----
 arch/powerpc/kernel/livepatch.c             |  38 +++++++
 arch/powerpc/kernel/module_64.c             |  56 ++++++++-
 arch/powerpc/lib/Makefile                   |   4 +-
 arch/s390/Kconfig                           |   1 +
 kernel/livepatch/Makefile                   |  13 +++
 kernel/livepatch/core.c                     |  12 +-
 kernel/livepatch/ftrace-test.c              |   6 +
 kernel/trace/Kconfig                        |   5 +
 scripts/recordmcount.c                      |   6 +-
 scripts/recordmcount.h                      |  17 ++-
 19 files changed, 552 insertions(+), 47 deletions(-)
 create mode 100755 arch/powerpc/gcc-mprofile-kernel-notrace.sh
 create mode 100644 arch/powerpc/include/asm/livepatch.h
 create mode 100644 arch/powerpc/kernel/livepatch.c
 create mode 100644 kernel/livepatch/ftrace-test.c
Signature · 1 line
1.8.5.6