From: bjorn.topel@gmail.com To: linux-riscv@lists.infradead.org, daniel@iogearbox.net, ast@kernel.org, netdev@vger.kernel.org Cc: "Björn Töpel" <bjorn.topel@gmail.com>, palmer@sifive.com, hch@infradead.org Subject: [PATCH bpf-next 0/3] Add RISC-V (RV64G) BPF JIT Date: Sun, 3 Feb 2019 12:51:28 +0100 [thread overview] Message-ID: <20190203115132.8766-1-bjorn.topel@gmail.com> (raw) From: Björn Töpel <bjorn.topel@gmail.com> Hi! This series adds an RV64G BPF JIT to the kernel. I've sent out a RFC for a couple of weeks ago, and think this code is feature-complete/stable enough (famous last words) for a proper patch. Unfortunately, kprobes isn't supported by RISC-V yet (Patrick Stählin sent out an RFC last year), which means that all tests involving BPF_PROG_TYPE_TRACEPOINT, BPF_PROG_TYPE_PERF_EVENT, BPF_PROG_TYPE_KPROBE and BPF_PROG_TYPE_RAW_TRACEPOINT will fail. Further, the implementation does not support "far branching" (>4KiB). The implementation passes all the test_bpf.ko tests: test_bpf: Summary: 378 PASSED, 0 FAILED, [366/366 JIT'ed] All the tail_call tests in the selftest/bpf/test_verifier program passes. All tests where done on QEMU emulator version 3.1.50 (v3.1.0-688-g8ae951fbc106). I'll test it on real hardware, when I get access to it. I'm routing this patch via bpf-next/netdev mailing list (after a conversation with Palmer at FOSDEM), mainly because the other JITs went that path. Thanks for all the comments! Cheers, Björn RFCv1 -> v1: * Cleaned up the Kconfig and net/Makefile. (Christoph) * Removed the entry-stub and squashed the build/config changes to be part of the JIT implementation. (Christoph) * Simplified the register tracking code. (Daniel) * Removed unused macros. (Daniel) * Added myself as maintainer and updated documentation. (Daniel) * Removed HAVE_EFFICIENT_UNALIGNED_ACCESS. (Christoph, Palmer) * Added tail-calls and cleaned up the code. Björn Töpel (3): bpf, riscv: add BPF JIT for RV64G MAINTAINERS: add RISC-V BPF JIT maintainer bpf, doc: add RISC-V to filter.txt Documentation/networking/filter.txt | 16 +- MAINTAINERS | 6 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 2 +- arch/riscv/net/Makefile | 1 + arch/riscv/net/bpf_jit_comp.c | 1502 +++++++++++++++++++++++++++ 6 files changed, 1520 insertions(+), 8 deletions(-) create mode 100644 arch/riscv/net/Makefile create mode 100644 arch/riscv/net/bpf_jit_comp.c -- 2.19.1
WARNING: multiple messages have this Message-ID (diff)
From: bjorn.topel@gmail.com To: linux-riscv@lists.infradead.org, daniel@iogearbox.net, ast@kernel.org, netdev@vger.kernel.org Cc: hch@infradead.org, "Björn Töpel" <bjorn.topel@gmail.com>, palmer@sifive.com Subject: [PATCH bpf-next 0/3] Add RISC-V (RV64G) BPF JIT Date: Sun, 3 Feb 2019 12:51:28 +0100 [thread overview] Message-ID: <20190203115132.8766-1-bjorn.topel@gmail.com> (raw) From: Björn Töpel <bjorn.topel@gmail.com> Hi! This series adds an RV64G BPF JIT to the kernel. I've sent out a RFC for a couple of weeks ago, and think this code is feature-complete/stable enough (famous last words) for a proper patch. Unfortunately, kprobes isn't supported by RISC-V yet (Patrick Stählin sent out an RFC last year), which means that all tests involving BPF_PROG_TYPE_TRACEPOINT, BPF_PROG_TYPE_PERF_EVENT, BPF_PROG_TYPE_KPROBE and BPF_PROG_TYPE_RAW_TRACEPOINT will fail. Further, the implementation does not support "far branching" (>4KiB). The implementation passes all the test_bpf.ko tests: test_bpf: Summary: 378 PASSED, 0 FAILED, [366/366 JIT'ed] All the tail_call tests in the selftest/bpf/test_verifier program passes. All tests where done on QEMU emulator version 3.1.50 (v3.1.0-688-g8ae951fbc106). I'll test it on real hardware, when I get access to it. I'm routing this patch via bpf-next/netdev mailing list (after a conversation with Palmer at FOSDEM), mainly because the other JITs went that path. Thanks for all the comments! Cheers, Björn RFCv1 -> v1: * Cleaned up the Kconfig and net/Makefile. (Christoph) * Removed the entry-stub and squashed the build/config changes to be part of the JIT implementation. (Christoph) * Simplified the register tracking code. (Daniel) * Removed unused macros. (Daniel) * Added myself as maintainer and updated documentation. (Daniel) * Removed HAVE_EFFICIENT_UNALIGNED_ACCESS. (Christoph, Palmer) * Added tail-calls and cleaned up the code. Björn Töpel (3): bpf, riscv: add BPF JIT for RV64G MAINTAINERS: add RISC-V BPF JIT maintainer bpf, doc: add RISC-V to filter.txt Documentation/networking/filter.txt | 16 +- MAINTAINERS | 6 + arch/riscv/Kconfig | 1 + arch/riscv/Makefile | 2 +- arch/riscv/net/Makefile | 1 + arch/riscv/net/bpf_jit_comp.c | 1502 +++++++++++++++++++++++++++ 6 files changed, 1520 insertions(+), 8 deletions(-) create mode 100644 arch/riscv/net/Makefile create mode 100644 arch/riscv/net/bpf_jit_comp.c -- 2.19.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next reply other threads:[~2019-02-03 11:52 UTC|newest] Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-03 11:51 bjorn.topel [this message] 2019-02-03 11:51 ` [PATCH bpf-next 0/3] Add RISC-V (RV64G) BPF JIT bjorn.topel 2019-02-03 11:51 ` [PATCH bpf-next 1/3] bpf, riscv: add BPF JIT for RV64G bjorn.topel 2019-02-03 11:51 ` bjorn.topel 2019-02-03 17:08 ` David Miller 2019-02-03 17:08 ` David Miller 2019-02-04 20:06 ` Daniel Borkmann 2019-02-04 20:06 ` Daniel Borkmann 2019-02-04 20:27 ` Björn Töpel 2019-02-04 20:27 ` Björn Töpel 2019-02-03 11:51 ` [PATCH bpf-next 2/3] MAINTAINERS: add RISC-V BPF JIT maintainer bjorn.topel 2019-02-03 11:51 ` bjorn.topel 2019-02-03 17:08 ` David Miller 2019-02-03 17:08 ` David Miller 2019-02-03 11:51 ` [PATCH bpf-next 3/3] bpf, doc: add RISC-V to filter.txt bjorn.topel 2019-02-03 11:51 ` bjorn.topel 2019-02-03 17:08 ` David Miller 2019-02-03 17:08 ` David Miller 2019-02-04 20:09 ` Daniel Borkmann 2019-02-04 20:09 ` Daniel Borkmann 2019-02-04 20:16 ` Björn Töpel 2019-02-04 20:16 ` Björn Töpel
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=20190203115132.8766-1-bjorn.topel@gmail.com \ --to=bjorn.topel@gmail.com \ --cc=ast@kernel.org \ --cc=daniel@iogearbox.net \ --cc=hch@infradead.org \ --cc=linux-riscv@lists.infradead.org \ --cc=netdev@vger.kernel.org \ --cc=palmer@sifive.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.