[PATCH bpf-next v2 0/4] Add ftrace direct call for arm64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This series adds ftrace direct call for arm64, which is required to attach
bpf trampoline to fentry.

Although there is no agreement on how to support ftrace direct call on arm64,
no patch has been posted except the one I posted in [1], so this series
continues the work of [1] with the addition of long jump support. Now ftrace
direct call works regardless of the distance between the callsite and custom
trampoline.

[1] https://lore.kernel.org/bpf/20220518131638.3401509-2-xukuohai@xxxxxxxxxx/

v2:
- Fix compile and runtime errors caused by ftrace_rec_arch_init

v1: https://lore.kernel.org/bpf/20220913063146.74750-1-xukuohai@xxxxxxxxxxxxxxx/

Xu Kuohai (4):
  ftrace: Allow users to disable ftrace direct call
  arm64: ftrace: Support long jump for ftrace direct call
  arm64: ftrace: Add ftrace direct call support
  ftrace: Fix dead loop caused by direct call in ftrace selftest

 arch/arm64/Kconfig                |   2 +
 arch/arm64/Makefile               |   4 +
 arch/arm64/include/asm/ftrace.h   |  35 ++++--
 arch/arm64/include/asm/patching.h |   2 +
 arch/arm64/include/asm/ptrace.h   |   6 +-
 arch/arm64/kernel/asm-offsets.c   |   1 +
 arch/arm64/kernel/entry-ftrace.S  |  39 ++++--
 arch/arm64/kernel/ftrace.c        | 198 ++++++++++++++++++++++++++++--
 arch/arm64/kernel/patching.c      |  14 +++
 arch/arm64/net/bpf_jit_comp.c     |   4 +
 include/linux/ftrace.h            |   2 +
 kernel/trace/Kconfig              |   7 +-
 kernel/trace/ftrace.c             |   9 +-
 kernel/trace/trace_selftest.c     |   2 +
 14 files changed, 296 insertions(+), 29 deletions(-)

-- 
2.30.2




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux