Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1267169

Re: [PATCH 2/2] arm64: bpf: add BPF XADD instruction

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

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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