Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1267169
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction |
| Date | 2015-11-11 14:00 +0100 |
| Message-ID | <qtDai-2Sb-1@gated-at.bofh.it> (permalink) |
| References | (4 earlier) <qtAP8-1we-23@gated-at.bofh.it> <qtB8t-1CY-5@gated-at.bofh.it> <qtCef-2hA-11@gated-at.bofh.it> <qtCHh-2HY-11@gated-at.bofh.it> <qtCQW-2Lk-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Wed, Nov 11, 2015 at 12:38:31PM +0000, Will Deacon wrote: > > Hmm, gcc doesn't have an eBPF compiler backend, so this won't work on > > gcc at all. The eBPF backend in LLVM recognizes the __sync_fetch_and_add() > > keyword and maps that to a BPF_XADD version (BPF_W or BPF_DW). In the > > interpreter (__bpf_prog_run()), as Eric mentioned, this maps to atomic_add() > > and atomic64_add(), respectively. So the struct bpf_insn prog[] you saw > > from sock_example.c can be regarded as one possible equivalent program > > section output from the compiler. > > Ok, so if I understand you correctly, then __sync_fetch_and_add() has > different semantics depending on the backend target. That seems counter > to the LLVM atomics Documentation: > > http://llvm.org/docs/Atomics.html > > which specifically calls out the __sync_* primitives as being > sequentially-consistent and requiring barriers on ARM (which isn't the > case for atomic[64]_add in the kernel). > > If we re-use the __sync_* naming scheme in the source language, I don't > think we can overlay our own semantics in the backend. The > __sync_fetch_and_add primitive is also expected to return the old value, > which doesn't appear to be the case for BPF_XADD. Yikes. That's double fail. Please don't do this. If you use the __sync stuff (and I agree with Will, you should not) it really _SHOULD_ be sequentially consistent, which means full barriers all over the place. And if you name something XADD (exchange and add, or fetch-add) then it had better return the previous value. atomic*_add() does neither. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 2/2] arm64: bpf: add BPF XADD instruction Yang Shi <yang.shi@linaro.org> - 2015-11-11 00:10 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Eric Dumazet <eric.dumazet@gmail.com> - 2015-11-11 01:10 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction "Shi, Yang" <yang.shi@linaro.org> - 2015-11-11 01:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Alexei Starovoitov <alexei.starovoitov@gmail.com> - 2015-11-11 01:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Z Lim <zlim.lnx@gmail.com> - 2015-11-11 04:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Arnd Bergmann <arnd@arndb.de> - 2015-11-11 10:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Will Deacon <will.deacon@arm.com> - 2015-11-11 11:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Daniel Borkmann <daniel@iogearbox.net> - 2015-11-11 11:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Will Deacon <will.deacon@arm.com> - 2015-11-11 13:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Daniel Borkmann <daniel@iogearbox.net> - 2015-11-11 13:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Will Deacon <will.deacon@arm.com> - 2015-11-11 13:40 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 14:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Daniel Borkmann <daniel@iogearbox.net> - 2015-11-11 17:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Will Deacon <will.deacon@arm.com> - 2015-11-11 17:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Alexei Starovoitov <alexei.starovoitov@gmail.com> - 2015-11-11 18:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction David Miller <davem@davemloft.net> - 2015-11-11 18:40 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Will Deacon <will.deacon@arm.com> - 2015-11-11 18:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction David Miller <davem@davemloft.net> - 2015-11-11 20:10 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 19:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Alexei Starovoitov <alexei.starovoitov@gmail.com> - 2015-11-11 19:20 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 19:40 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 19:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 19:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 20:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Alexei Starovoitov <alexei.starovoitov@gmail.com> - 2015-11-11 21:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 23:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Alexei Starovoitov <alexei.starovoitov@gmail.com> - 2015-11-12 00:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-12 10:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Daniel Borkmann <daniel@iogearbox.net> - 2015-11-11 20:00 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction David Miller <davem@davemloft.net> - 2015-11-11 20:10 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Peter Zijlstra <peterz@infradead.org> - 2015-11-11 20:30 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Daniel Borkmann <daniel@iogearbox.net> - 2015-11-11 20:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction Will Deacon <will.deacon@arm.com> - 2015-11-11 19:50 +0100
Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction David Miller <davem@davemloft.net> - 2015-11-11 20:10 +0100
csiph-web