Re: [PATCH 0/2] Add support to dump the kernel page tables
From: haoran . jiang
Date: Tue Jul 21 2026 - 22:54:31 EST
2026年7月10日 20:52, "Huacai Chen" <chenhuacai@xxxxxxxxxx mailto:chenhuacai@xxxxxxxxxx?to=%22Huacai%20Chen%22%20%3Cchenhuacai%40kernel.org%3E > 写到:
>
> Hi, Haoran,
>
> On Tue, Jul 7, 2026 at 2:47 PM <haoran.jiang@xxxxxxxxx> wrote:
>
> >
> > From: Haoran Jiang <jianghaoran@xxxxxxxxxx>
> >
> > Enforce the W^X principle on page tables,
> > and also support the kernel page dump feature.
> >
> > The following tests were performed:
> >
> > kdb:
> > echo kgdbts=V1 > /sys/module/kgdbts/parameters/kgdbts
> >
> > ebpf:
> > ./test_progs -t struct_ops -d struct_ops_multi_pages
> > ./test_progs -t fexit_stress
> > ./test_progs -t module_fentry_shadow
> > ./test_progs -t fentry_test/fentry
> > ./test_progs -t fexit_test/fexit
> > ./test_progs -t modify_return
> > ./test_progs -t fexit_sleep
> > ./test_progs -t test_overhead
> > ./test_progs -t trampoline_count
> > ./test_progs -t kprobe
> > ./test_progs -t uprobe
> >
> > livepatch:
> > insmod samples/livepatch/livepatch_sample.ko
> >
> > kprobe:
> > insmod samples/kprobes/kprobe_example.ko
> > insmod samples/kprobes/kretprobe_example.ko
> >
> > unxibench:
> > before this patch:
> > running 1 parallel copy of tests: 1492
> > running 128 parallel copies of tests: 8765
> >
> > after this patch:
> > running 1 parallel copy of tests: 1440
> > running 128 parallel copies of tests: 8749
> >
> I hope you have verified ftrace, kprobes, jump label, kgdb, etc. on
> modules, not only on the kernel itself. Otherwise the tests are not
> enough.
>
jump label:
Tested with the kernel test module at `/lib/test_static_keys.c`. The `static_branch_likely()` and `static_branch_unlikely()` functions
were exercised in module context, and all test cases passed successfully.
cd lib
insmod test_static_key_base.ko
insmod test_static_keys.ko
kprobe:
With ftrace disabled, used the kprobe sample module from `samples/kprobe/` in the kernel source to trace functions in a custom module.
The tracing of functions within the module worked as expected.
cd sample/kprobe
insmod kprobe_example.ko symbol="test_print"
insmod kretprobe_example.ko func="test_print"
[ 798.077262] handler_pre: <test_print> p->addr = 0x000000007e1cc0d2, era = 0xffff800003474000, estat = 0xc0000
[ 798.087827] handler_post: <test_print> p->addr = 0x000000007e1cc0d2, estat = 0xc0000
[ 798.116541] test_print returned 39 and took 39280450 ns to execute
ftrace:
With ftrace and fprobe enabled, the following eBPF program was used to trace functions such as `bpf_testmod_fentry_test1()`
in the `bpf_testmod.c` module. The underlying mechanism leverages ftrace capabilities, and all tests passed successfully.
cd tools/testing/selftests/bpf
./test_progs -t kprobe_multi_testmod_test
#172/1 kprobe_multi_testmod_test/testmod_attach_api_syms:OK
#172/2 kprobe_multi_testmod_test/testmod_attach_api_addrs:OK
#172 kprobe_multi_testmod_test:OK
Summary: 1/2 PASSED, 0 SKIPPED, 0 FAILED
kdb:
With KDB enabled, I installed breakpoints on functions in the module and performed single-step execution tests via KDB.
The tests passed successfully. During the testing, we observed that single-step debugging triggered an Oops error,
but this issue is unrelated to the two patches mentioned above.
[112]kdb> ss
Entering kdb (current=0x900020009f520000, pid 10661) on processor 112 Oops: (null)
due to oops @ 0x90000000005b57a4
I have submitted a fix patch for this issue.
https://lore.kernel.org/loongarch/20260722024409.158142-1-haoran.jiang@xxxxxxxxx/T/#u
> @Tiezhu, you are familiar with all the above mechanisms, so please
> help to review, and double check whether uprobes need to be modified.
>
> Huacai
>
> >
> > Haoran Jiang (2):
> > LoongArch: Enforce W^X for page-mapped virtual memory region
> > LoongArch: Add support to dump the kernel page tables
> >
> > arch/loongarch/Kconfig | 2 +
> > arch/loongarch/include/asm/pgtable-bits.h | 12 +-
> > arch/loongarch/kernel/ftrace_dyn.c | 16 +
> > arch/loongarch/kernel/inst.c | 25 +-
> > arch/loongarch/kernel/jump_label.c | 3 +
> > arch/loongarch/kernel/kgdb.c | 50 +++
> > arch/loongarch/kernel/kprobes.c | 4 +-
> > arch/loongarch/mm/Makefile | 1 +
> > arch/loongarch/mm/ptdump.c | 474 ++++++++++++++++++++++
> > 9 files changed, 575 insertions(+), 12 deletions(-)
> > create mode 100644 arch/loongarch/mm/ptdump.c
> >
> > --
> > 2.43.0
> >
>