[PATCH v3 01/29] bpf: replace deprecated SMP barriers with C11 fences
Marat Khalili
qm2k21 at gmail.com
Tue Oct 13 18:04:33 CEST 2026
On 13/10/2026 08:54, David Marchand wrote:
> This blocks the SMP barrier removal for rc1.
>
> What is your proposal?
>
> I think it makes sense to take
> https://patchwork.dpdk.org/project/dpdk/list/?series=39599 first, then
> resolve the conflict for the patch from this thread.
> Is this BPF series ready for merge?
>
> If it is not ready yet, what should be done on the current patch?
> Is a s/rte_smp_rmb()/rte_atomic_thread_fence(rte_memory_order_seq_cst)/ enough?
> The commitlog would also need some rewritting.
I think we should be able to unblock this patchset with the diff below.
Last version contains some additional out-of-scope changes that might
not be helpful in the long run, but I tend to believe Stephen and
Wathsala that they are not breaking anything (I have not checked it
myself). If the version below is ok with Stephen I would prefer it
(consider it acked), otherwise I can withdraw my NAK for the sake of the
release, at the cost of some potentially confusing noise in the commit
history in the future.
diff --git a/lib/bpf/bpf_pkt.c b/lib/bpf/bpf_pkt.c
index f072fdaaed..0d0c37cdc5 100644
--- a/lib/bpf/bpf_pkt.c
+++ b/lib/bpf/bpf_pkt.c
@@ -82,7 +82,7 @@ bpf_eth_cbi_inuse(struct bpf_eth_cbi *cbi)
{
cbi->use++;
/* make sure no store/load reordering could happen */
- rte_smp_mb();
+ rte_atomic_thread_fence(rte_memory_order_seq_cst);
}
/*
@@ -92,7 +92,7 @@ static __rte_always_inline void
bpf_eth_cbi_unuse(struct bpf_eth_cbi *cbi)
{
/* make sure all previous loads are completed */
- rte_smp_rmb();
+ rte_atomic_thread_fence(rte_memory_order_release);
cbi->use++;
}
@@ -105,7 +105,7 @@ bpf_eth_cbi_wait(const struct bpf_eth_cbi *cbi)
uint32_t puse;
/* make sure all previous loads and stores are completed */
- rte_smp_mb();
+ rte_atomic_thread_fence(rte_memory_order_seq_cst);
puse = cbi->use;
@@ -439,7 +439,7 @@ bpf_eth_cbi_unload(struct bpf_eth_cbi *bc)
{
/* mark this cbi as empty */
bc->cb = NULL;
- rte_smp_mb();
+ rte_atomic_thread_fence(rte_memory_order_seq_cst);
/* make sure datapath doesn't use bpf anymore, then destroy bpf */
bpf_eth_cbi_wait(bc);
More information about the dev
mailing list