Hi Sahil, Thanks for updating! Could you check Sashiko's comments on the series?
https://sashiko.dev/#/patchset/20260930203129.51048-1-sahilcdq0%40gmail.com I need OpenRISC maintainer's review for this series too. Thank you, On Thu, 01 Oct 2026 02:01:25 +0530, Sahil Siddiq <[email protected]> wrote: > Hi, > > Apologies for the delay. This is v2 of the patch series to add KProbe > support for OpenRISC. > > The series also adds support for Kretprobes (which depends on the rethook > framework [1]). Kretprobes are fired on function return. > > In order to build the kernel with Kprobes and Kretprobes enabled, the > following config options are required: > 1. CONFIG_HAVE_KPROBES=y > 2. CONFIG_KPROBES=y > 3. CONFIG_RETHOOK=y > 4. CONFIG_KRETPROBES=y > > I tested the generic functionality of Kprobes and Kretprobes using the > tests located at "lib/tests" [2], samples located at "samples/kprobes" [3], > as well as a few test modules that I have published here [4]. The following > options are required to build the samples and tests: > 1. CONFIG_SAMPLES=y > 2. CONFIG_SAMPLE_KPROBES=m > 3. CONFIG_SAMPLE_KRETPROBES=m > 4. CONFIG_KPROBES_SANITY_TEST=m > > I have also added unit tests at "arch/openrisc/kernel/tests" to verify > that Kprobes work properly when inserted at branch instructions, and > that delay slots are handled correctly. The tests are based on the Kprobe > testsuite added for RISC-V. The following options need to be enabled to > build the tests: > 1. CONFIG_KUNIT=y > 2. CONFIG_RUNTIME_KERNEL_TESTING_MENU=y > 3. CONFIG_OR_KPROBES_KUNIT=m > > Below are the results of the tests and sample modules when run in my > environment. > > - kretprobe_example: > > /home # insmod kretprobe_example.ko > Planted return probe at kernel_clone: (ptrval) > /home # ls >/dev/null > kernel_clone returned 35 and took 1302450 ns to execute > /home # rmmod kretprobe_example.ko > kernel_clone returned 36 and took 1121200 ns to execute > kretprobe at (ptrval) unregistered > Missed probing 0 instances of kernel_clone > > - test_kprobes: > > /home # insmod test_kprobes.ko > KTAP version 1 > 1..1 > KTAP version 1 > # Subtest: kprobes_test > # module: test_kprobes > 1..5 > ok 1 test_kprobe > ok 2 test_kprobes > ok 3 test_kprobe_missed > ok 4 test_kretprobe > ok 5 test_kretprobes > # kprobes_test: pass:5 fail:0 skip:0 total:5 > # Totals: pass:5 fail:0 skip:0 total:5 > ok 1 kprobes_test > > - openrisc_test_kprobes: > > /home # insmod openrisc_test_kprobes.ko > KTAP version 1 > 1..1 > KTAP version 1 > # Subtest: kprobes_openrisc > # module: openrisc_test_kprobes > 1..1 > ok 1 test_kprobe_openrisc > ok 1 kprobes_openrisc > > I have also made changes based on the review comments I received for > v1 [5] including several of Sachiko's comments [6]. I chose not to make > changes in a few places. I'll send emails as a reply to this thread > explaining my reasoning inline. > > Thanks, > Sahil > > [1] https://lkml.rescloud.iu.edu/2203.0/05974.html > [2] https://github.com/torvalds/linux/tree/master/lib/tests > [3] https://github.com/torvalds/linux/tree/master/samples/kprobes > [4] https://github.com/valdaarhun/or-dev > [5] https://lwn.net/ml/all/[email protected]/ > [6] > https://sashiko.dev/#/patchset/20260407185650.79816-1-sahilcdq0%40gmail.com > > Sahil Siddiq (4): > openrisc: Add utilities and clean up simulation of instructions > openrisc: Add KProbes > openrisc: Add unit tests for KProbes on branch instructions > openrisc: Add Kretprobes > > arch/openrisc/Kconfig | 3 + > arch/openrisc/Kconfig.debug | 30 +- > arch/openrisc/configs/or1ksim_defconfig | 2 + > arch/openrisc/configs/virt_defconfig | 2 + > arch/openrisc/include/asm/asm.h | 22 + > arch/openrisc/include/asm/break.h | 19 + > arch/openrisc/include/asm/cpuinfo.h | 3 + > arch/openrisc/include/asm/insn-def.h | 64 ++- > arch/openrisc/include/asm/kprobes.h | 77 ++++ > arch/openrisc/include/asm/spr_defs.h | 1 + > arch/openrisc/kernel/Makefile | 5 +- > arch/openrisc/kernel/entry.S | 16 + > arch/openrisc/kernel/insn.c | 84 ++++ > arch/openrisc/kernel/kprobes.c | 400 ++++++++++++++++++ > arch/openrisc/kernel/rethook.c | 32 ++ > arch/openrisc/kernel/rethook.h | 8 + > arch/openrisc/kernel/rethook_trampoline.S | 97 +++++ > arch/openrisc/kernel/setup.c | 4 + > arch/openrisc/kernel/tests/Makefile | 3 + > arch/openrisc/kernel/tests/test_kprobes.c | 59 +++ > arch/openrisc/kernel/tests/test_kprobes.h | 24 ++ > arch/openrisc/kernel/tests/test_kprobes_asm.S | 147 +++++++ > arch/openrisc/kernel/traps.c | 82 ++-- > arch/openrisc/lib/memcpy.c | 2 + > arch/openrisc/lib/memset.S | 4 + > arch/openrisc/mm/fault.c | 5 + > samples/kprobes/kprobe_example.c | 8 + > 27 files changed, 1152 insertions(+), 51 deletions(-) > create mode 100644 arch/openrisc/include/asm/asm.h > create mode 100644 arch/openrisc/include/asm/break.h > create mode 100644 arch/openrisc/include/asm/kprobes.h > create mode 100644 arch/openrisc/kernel/insn.c > create mode 100644 arch/openrisc/kernel/kprobes.c > create mode 100644 arch/openrisc/kernel/rethook.c > create mode 100644 arch/openrisc/kernel/rethook.h > create mode 100644 arch/openrisc/kernel/rethook_trampoline.S > create mode 100644 arch/openrisc/kernel/tests/Makefile > create mode 100644 arch/openrisc/kernel/tests/test_kprobes.c > create mode 100644 arch/openrisc/kernel/tests/test_kprobes.h > create mode 100644 arch/openrisc/kernel/tests/test_kprobes_asm.S > > -- > 2.55.0 > -- Masami Hiramatsu (Google) <[email protected]>
