On 9/1/22 4:27 AM, Tiezhu Yang wrote:
The basic support for LoongArch has been merged into the upstream Linux kernel since 5.19-rc1 on June 5, 2022, this patch series adds BPF JIT support for LoongArch. Here is the LoongArch documention: https://www.kernel.org/doc/html/latest/loongarch/index.html With this patch series, the test cases in lib/test_bpf.ko have passed on LoongArch. # echo 1 > /proc/sys/net/core/bpf_jit_enable # modprobe test_bpf # dmesg | grep Summary test_bpf: Summary: 1026 PASSED, 0 FAILED, [1014/1014 JIT'ed] test_bpf: test_tail_calls: Summary: 10 PASSED, 0 FAILED, [10/10 JIT'ed] test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED It seems that this patch series can not be applied cleanly to bpf-next which is not synced to v6.0-rc3.
For bpf-next tree this doesn't apply cleanly. Huacai, probably easier if you take it in. Otherwise this needs rebase (and your Ack as arch maintainer), but then there'll be merge conflict later anyway. [...] Applying: LoongArch: Move {signed,unsigned}_imm_check() to inst.h Applying: LoongArch: Add some instruction opcodes and formats error: patch failed: arch/loongarch/include/asm/inst.h:18 error: arch/loongarch/include/asm/inst.h: patch does not apply Patch failed at 0002 LoongArch: Add some instruction opcodes and formats [...] Thanks, Daniel
v3: -- Remove CONFIG_TEST_BPF in loongson3_defconfig v2: -- Rebased series on v6.0-rc3 -- Make build_epilogue() static -- Use alsl.d, bstrpick.d, [ld/st]ptr.[w/d] to save some instructions -- Replace move_imm32() and move_imm64() with move_imm() and optimize it -- Add code comments to explain the considerations of conditional jump https://lore.kernel.org/bpf/1661857809-10828-1-git-send-email-yangtiezhu@xxxxxxxxxxx/ v1: -- Rebased series on v6.0-rc1 -- Move {signed,unsigned}_imm_check() to inst.h -- Define the imm field as "unsigned int" in the instruction format -- Use DEF_EMIT_*_FORMAT to define the same kind of instructions -- Use "stack_adjust += sizeof(long) * 8" in build_prologue() https://lore.kernel.org/bpf/1660996260-11337-1-git-send-email-yangtiezhu@xxxxxxxxxxx/ RFC: https://lore.kernel.org/bpf/1660013580-19053-1-git-send-email-yangtiezhu@xxxxxxxxxxx/ Tiezhu Yang (4): LoongArch: Move {signed,unsigned}_imm_check() to inst.h LoongArch: Add some instruction opcodes and formats LoongArch: Add BPF JIT support LoongArch: Enable BPF_JIT in default config arch/loongarch/Kbuild | 1 + arch/loongarch/Kconfig | 1 + arch/loongarch/configs/loongson3_defconfig | 1 + arch/loongarch/include/asm/inst.h | 383 ++++++++- arch/loongarch/kernel/module.c | 10 - arch/loongarch/net/Makefile | 7 + arch/loongarch/net/bpf_jit.c | 1160 ++++++++++++++++++++++++++++ arch/loongarch/net/bpf_jit.h | 282 +++++++ 8 files changed, 1830 insertions(+), 15 deletions(-) create mode 100644 arch/loongarch/net/Makefile create mode 100644 arch/loongarch/net/bpf_jit.c create mode 100644 arch/loongarch/net/bpf_jit.h