From: Sahil Siddiq <sahilcdq0@gmail.com>
To: jonas@southpole.se, stefan.kristiansson@saunalahti.fi,
shorne@gmail.com, naveen@kernel.org, davem@davemloft.net,
mhiramat@kernel.org
Cc: tytso@mit.edu, wangruikang@iscas.ac.cn, namcao@linutronix.de,
pjw@kernel.org, kees@kernel.org, linux-openrisc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
Sahil Siddiq <sahilcdq0@gmail.com>
Subject: [PATCH v2 0/4] openrisc: Add support for KProbes
Date: Thu, 1 Oct 2026 02:01:25 +0530 [thread overview]
Message-ID: <20260930203129.51048-1-sahilcdq0@gmail.com> (raw)
In-Reply-To: <20260407185650.79816-2-sahilcdq0@gmail.com>
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/20260407185650.79816-1-sahilcdq0@gmail.com/
[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
next prev parent reply other threads:[~2026-09-30 20:31 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-07 18:56 [RFC 0/2] " Sahil Siddiq
2026-04-07 18:56 ` [RFC 1/2] openrisc: Add utilities and clean up simulation of instructions Sahil Siddiq
2026-04-14 17:11 ` Stafford Horne
2026-04-15 6:10 ` Sahil
2026-04-15 6:39 ` Masami Hiramatsu
2026-04-16 4:57 ` Sahil
2026-09-30 20:31 ` Sahil Siddiq [this message]
2026-09-30 21:18 ` [PATCH v2 0/4] openrisc: Add support for KProbes Sahil
2026-09-30 20:31 ` [PATCH v2 1/4] openrisc: Add utilities and clean up simulation of instructions Sahil Siddiq
2026-09-30 20:31 ` [PATCH v2 2/4] openrisc: Add KProbes Sahil Siddiq
2026-09-30 20:31 ` [PATCH v2 3/4] openrisc: Add unit tests for KProbes on branch instructions Sahil Siddiq
2026-09-30 20:31 ` [PATCH v2 4/4] openrisc: Add Kretprobes Sahil Siddiq
2026-04-07 18:56 ` [RFC 2/2] openrisc: Add KProbes Sahil Siddiq
2026-04-15 6:48 ` [RFC 0/2] openrisc: Add support for KProbes Masami Hiramatsu
2026-04-16 5:00 ` Sahil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260930203129.51048-1-sahilcdq0@gmail.com \
--to=sahilcdq0@gmail.com \
--cc=davem@davemloft.net \
--cc=jonas@southpole.se \
--cc=kees@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-openrisc@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=namcao@linutronix.de \
--cc=naveen@kernel.org \
--cc=pjw@kernel.org \
--cc=shorne@gmail.com \
--cc=stefan.kristiansson@saunalahti.fi \
--cc=tytso@mit.edu \
--cc=wangruikang@iscas.ac.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®