[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210305094113.413544-1-bjorn.topel@gmail.com>
Date: Fri, 5 Mar 2021 10:41:11 +0100
From: Björn Töpel <bjorn.topel@...il.com>
To: ast@...nel.org, daniel@...earbox.net, netdev@...r.kernel.org,
bpf@...r.kernel.org
Cc: Björn Töpel <bjorn.topel@...il.com>,
bjorn.topel@...el.com, magnus.karlsson@...el.com,
jonathan.lemon@...il.com, maximmi@...dia.com, andrii@...nel.org,
toke@...hat.com, will@...nel.org, paulmck@...nel.org,
stern@...land.harvard.edu
Subject: [PATCH bpf-next v2 0/2] load-acquire/store-release barriers for AF_XDP rings
This two-patch series introduces load-acquire/store-release barriers
for the AF_XDP rings.
For most contemporary architectures, this is more effective than a
SPSC ring based on smp_{r,w,}mb() barriers. More importantly,
load-acquire/store-release semantics make the ring code easier to
follow.
This is effectively the change done in commit 6c43c091bdc5
("documentation: Update circular buffer for
load-acquire/store-release"), but for the AF_XDP rings.
Both libbpf and the kernel-side are updated.
Full details are outlined in the commits!
Thanks to the LKMM-folks (Paul/Alan/Will) for helping me out in this
complicated matter!
@Andrii I kept the barriers in libbpf_util.h to separate userfacing
APIs (xsk.h) from internals.
@Toke I kept "barriers" but reworded. Acquire/release are also
barriers.
@Will I'd really appreciate if you could take a look this change.
Changelog
v1[1]->v2:
* Expanded the commit message for patch 1, and included the LKMM
litmus tests. Hopefully this clear things up. (Daniel)
* Clarified why the smp_mb()/smp_load_acquire() is not needed in (A);
control dependency with load to store. (Toke)
[1] https://lore.kernel.org/bpf/20210301104318.263262-1-bjorn.topel@gmail.com/
Thanks,
Björn
Björn Töpel (2):
xsk: update rings for load-acquire/store-release barriers
libbpf, xsk: add libbpf_smp_store_release libbpf_smp_load_acquire
net/xdp/xsk_queue.h | 30 +++++++---------
tools/lib/bpf/libbpf_util.h | 72 +++++++++++++++++++++++++------------
tools/lib/bpf/xsk.h | 17 +++------
3 files changed, 68 insertions(+), 51 deletions(-)
base-commit: bce8623135fbe54bd86797df72cb85bfe4118b6e
--
2.27.0
Powered by blists - more mailing lists