public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v12 0/5] Add kprobe and kretprobe support for LoongArch
@ 2023-01-18  2:00 Tiezhu Yang
  2023-01-18  2:00 ` [PATCH v12 1/5] LoongArch: Simulate branch and PC* instructions Tiezhu Yang
                   ` (5 more replies)
  0 siblings, 6 replies; 26+ messages in thread
From: Tiezhu Yang @ 2023-01-18  2:00 UTC (permalink / raw)
  To: Huacai Chen, WANG Xuerui, Masami Hiramatsu; +Cc: loongarch, linux-kernel

v12:
  -- Rebase on the latest code
  -- Fix -Wmissing-prototypes warning when make W=1
  -- Drop patch #6 "Use common function sign_extend64()"
     since it has been applied yet

v11:
  -- Rebase on the latest code
  -- Address all the review comments, thank you all
  -- Modify arch_prepare_kprobe() and setup_singlestep()
     to make the probe logic more clear
  -- Mark some assembler symbols as non-kprobe-able
  -- Use common function sign_extend64()
  -- Test 20 times about 36 hours for all the 71 assembler
     functions annotated with SYM_CODE_START and SYM_FUNC_START
     under arch/loongarch, especially test memset alone for 10
     hours, no hang problems

v10:
  -- Remove sign_extend() based on the latest code
  -- Rename insns_are_not_supported() to insns_not_supported()
  -- Rename insns_are_not_simulated() to insns_not_simulated()
  -- Set KPROBE_HIT_SSDONE if cur->post_handler is not NULL
  -- Enable preemption for KPROBE_REENTER in kprobe_fault_handler()

v9:
  -- Rename sign_extended() to sign_extend()
  -- Modify kprobe_fault_handler() to handle all of kprobe_status

v8:
  -- Put "regs->csr_prmd &= ~CSR_PRMD_PIE;" ahead to save one line
  -- Add code comment of preempt_disable()
  -- Put kprobe_page_fault() in __do_page_fault()
  -- Modify the check condition of break insn in kprobe_breakpoint_handler()

v7:
  -- Remove stop_machine_cpuslocked() related code

v6:
  -- Add a new patch to redefine larch_insn_patch_text() with
     stop_machine_cpuslocked()
  -- Modify kprobe_breakpoint_handler() to consider the original
     insn is break and return the correct value
  -- Modify do_bp() to refresh bcode when original insn is break

v5:
  -- Rebase on the latest code
  -- Use stop_machine_cpuslocked() to modify insn to avoid CPU race

v4:
  -- Remove kprobe_exceptions_notify() in kprobes.c
  -- Call kprobe_breakpoint_handler() and kprobe_singlestep_handler()
     in do_bp()

v3:
  -- Rebase on the latest code
  -- Check the alignment of PC in simu_branch() and simu_pc()
  -- Add ibar in flush_insn_slot()
  -- Rename kprobe_{pre,post}_handler() to {post_}kprobe_handler
  -- Add preempt_disable() and preempt_enable_no_resched()
  -- Remove r0 save/restore and do some minor changes
     in kprobes_trampoline.S
  -- Do not enable CONFIG_KPROBES by default

v2:
  -- Split simu_branch() and simu_pc() into a single patch
  -- Call kprobe_page_fault() in do_page_fault()
  -- Add kprobes_trampoline.S for kretprobe

Tiezhu Yang (5):
  LoongArch: Simulate branch and PC* instructions
  LoongArch: Add kprobe support
  LoongArch: Add kretprobe support
  LoongArch: Mark some assembler symbols as non-kprobe-able
  samples/kprobes: Add LoongArch support

 arch/loongarch/Kconfig                     |   2 +
 arch/loongarch/include/asm/asm.h           |  10 +
 arch/loongarch/include/asm/inst.h          |  20 ++
 arch/loongarch/include/asm/kprobes.h       |  61 +++++
 arch/loongarch/include/asm/ptrace.h        |   1 +
 arch/loongarch/kernel/Makefile             |   2 +
 arch/loongarch/kernel/entry.S              |   1 +
 arch/loongarch/kernel/inst.c               | 123 +++++++++
 arch/loongarch/kernel/kprobes.c            | 405 +++++++++++++++++++++++++++++
 arch/loongarch/kernel/kprobes_trampoline.S |  96 +++++++
 arch/loongarch/kernel/traps.c              |  11 +-
 arch/loongarch/lib/memcpy.S                |   3 +
 arch/loongarch/mm/fault.c                  |   3 +
 samples/kprobes/kprobe_example.c           |   8 +
 14 files changed, 741 insertions(+), 5 deletions(-)
 create mode 100644 arch/loongarch/include/asm/kprobes.h
 create mode 100644 arch/loongarch/kernel/kprobes.c
 create mode 100644 arch/loongarch/kernel/kprobes_trampoline.S

-- 
2.1.0


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2023-02-07  4:32 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-18  2:00 [PATCH v12 0/5] Add kprobe and kretprobe support for LoongArch Tiezhu Yang
2023-01-18  2:00 ` [PATCH v12 1/5] LoongArch: Simulate branch and PC* instructions Tiezhu Yang
2023-01-18  2:00 ` [PATCH v12 2/5] LoongArch: Add kprobe support Tiezhu Yang
2023-01-18  2:00 ` [PATCH v12 3/5] LoongArch: Add kretprobe support Tiezhu Yang
2023-01-18  2:01 ` [PATCH v12 4/5] LoongArch: Mark some assembler symbols as non-kprobe-able Tiezhu Yang
2023-01-18  4:14   ` Huacai Chen
2023-01-18  4:23     ` Tiezhu Yang
2023-01-18  6:05       ` Jinyang He
2023-01-18  6:24         ` Tiezhu Yang
2023-01-18  7:17           ` Huacai Chen
2023-01-19 15:31             ` Masami Hiramatsu
2023-01-20 13:23               ` Huacai Chen
2023-02-01 12:55                 ` Masami Hiramatsu
2023-01-18  7:20           ` Jinyang He
2023-01-18  2:01 ` [PATCH v12 5/5] samples/kprobes: Add LoongArch support Tiezhu Yang
2023-01-18  3:30 ` [PATCH v12 0/5] Add kprobe and kretprobe support for LoongArch Huacai Chen
2023-02-01  4:56   ` Huacai Chen
2023-02-01  9:40     ` Jeff Xie
2023-02-02  2:23       ` Tiezhu Yang
2023-02-02  3:33         ` Jeff Xie
2023-02-02 23:59           ` Masami Hiramatsu
2023-02-06 12:13           ` Huacai Chen
2023-02-06 12:48             ` Jeff Xie
2023-02-07  3:14               ` Tiezhu Yang
2023-02-07  4:03                 ` Huacai Chen
2023-02-07  4:32                   ` Jeff Xie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox