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);

Reply via email to