All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next v2 0/2] load-acquire/store-release barriers for AF_XDP rings
@ 2021-03-05  9:41 Björn Töpel
  2021-03-05  9:41 ` [PATCH bpf-next v2 1/2] xsk: update rings for load-acquire/store-release barriers Björn Töpel
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Björn Töpel @ 2021-03-05  9:41 UTC (permalink / raw)
  To: ast, daniel, netdev, bpf
  Cc: Björn Töpel, bjorn.topel, magnus.karlsson,
	jonathan.lemon, maximmi, andrii, toke, will, paulmck, stern

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-03-07  3:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-05  9:41 [PATCH bpf-next v2 0/2] load-acquire/store-release barriers for AF_XDP rings Björn Töpel
2021-03-05  9:41 ` [PATCH bpf-next v2 1/2] xsk: update rings for load-acquire/store-release barriers Björn Töpel
2021-03-05  9:41 ` [PATCH bpf-next v2 2/2] libbpf, xsk: add libbpf_smp_store_release libbpf_smp_load_acquire Björn Töpel
2021-03-05 13:50 ` [PATCH bpf-next v2 0/2] load-acquire/store-release barriers for AF_XDP rings Toke Høiland-Jørgensen
2021-03-07  3:40 ` patchwork-bot+netdevbpf

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.