Message ID | 1661999249-10258-1-git-send-email-yangtiezhu@loongson.cn (mailing list archive) |
---|---|
Headers | show |
Series | Add BPF JIT support for LoongArch | expand |
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@loongson.cn/ > > 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@loongson.cn/ > > RFC: > https://lore.kernel.org/bpf/1660013580-19053-1-git-send-email-yangtiezhu@loongson.cn/ > > 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 >
Hi, Daniel, On Fri, Sep 2, 2022 at 9:34 PM Daniel Borkmann <daniel@iogearbox.net> wrote: > > 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. This series can be cleanly applied on loongarch-next. So if this series is good to you, please give an Acked-by, and I will apply them to loongarch-next, thanks. Huacai > > [...] > 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@loongson.cn/ > > > > 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@loongson.cn/ > > > > RFC: > > https://lore.kernel.org/bpf/1660013580-19053-1-git-send-email-yangtiezhu@loongson.cn/ > > > > 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 > > >