v4: My sincere apologies for the misunderstanding in my interpretation of Tiezhu's reply in the v2 email thread. After the release of v3, Tiezhu reminded me again of the importance of splitting the patches, and I am very grateful for this. Below are the changes made for v4.
Split the patch titled "LoongArch: BPF: Enhance trampoline support for kernel and module tracing" into the following smaller patches by functionality to facilitate code reading and review, while ensuring the code logic and modification locations remain unchanged: "LoongArch: BPF: Enable and fix trampoline-based tracing for module functions" "LoongArch: BPF: Save return address register ra to t0 before trampoline" "LoongArch: BPF: Adjust the jump offset of tail calls" "LoongArch: BPF: Enhance the bpf_arch_text_poke() function" --------------------------Changelog------------------------------------ v3: links: https://lore.kernel.org/all/[email protected]/ 1. Adjust the position of fixup_exception() in the patch "LoongArch: Enable exception fixup for specific ADE": move its invocation to within the code block wrapped by irqentry_enter()/irqentry_exit(). 2. Add the relevant test items to the patch commit log. 3. Adjust the sequence of patches With the exception of the patch "LoongArch: Enable exception fixup for specific ADE", no source code changes have been made in the other patches. v2: links: https://lore.kernel.org/all/[email protected]/ Referring to Tiezhu's suggestion, split the v1 patch titled "LoongArch: Modify the jump logic of the trampoline" into three parts: (1) ftrace code (2) sample test (3) bpf code The code logic and implementation remain unchanged. v1: links: https://lore.kernel.org/all/[email protected]/ The following test cases under the tools/testing/selftests/bpf/ directory have passed the test: ./test_progs -t module_attach ./test_progs -t module_fentry_shadow ./test_progs -t subprogs ./test_progs -t subprogs_extable ./test_progs -t tailcalls ./test_progs -t struct_ops -d struct_ops_multi_pages ./test_progs -t fexit_bpf2bpf ./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 fentry_fexit ./test_progs -t modify_return ./test_progs -t fexit_sleep ./test_progs -t test_overhead ./test_progs -t trampoline_count Chenghao Duan (7): LoongArch: ftrace: Refactor register restoration in ftrace_common_return LoongArch: Enable exception fixup for specific ADE subcode LoongArch: BPF: Enable and fix trampoline-based tracing for module functions LoongArch: BPF: Save return address register ra to t0 before trampoline LoongArch: BPF: Adjust the jump offset of tail calls LoongArch: BPF: Enhance the bpf_arch_text_poke() function LoongArch: ftrace: Adjust register stack restore order in direct call trampolines arch/loongarch/kernel/mcount_dyn.S | 14 +++++--- arch/loongarch/kernel/traps.c | 9 ++++- arch/loongarch/net/bpf_jit.c | 38 +++++++++++++++------ samples/ftrace/ftrace-direct-modify.c | 8 ++--- samples/ftrace/ftrace-direct-multi-modify.c | 8 ++--- samples/ftrace/ftrace-direct-multi.c | 4 +-- samples/ftrace/ftrace-direct-too.c | 4 +-- samples/ftrace/ftrace-direct.c | 4 +-- 8 files changed, 59 insertions(+), 30 deletions(-) -- 2.25.1
