[dpdk-dev] Bit spinlocks in DPDK

Thomas Monjalon thomas.monjalon at 6wind.com
Fri Dec 20 16:39:05 CET 2013


Hello,

07/12/2013 18:54, François-Frédéric Ozog :
> 1) If the critical section deals with weakly ordered loads then explicit
> fencing MUST be used: if not, out of order execution will just kill your
> idea of critical section.
[...]
> So use rte_mb() or rte_wmb() or rte_rmb() where appropriate. I recommend
> the rte_unlock code and documentation explains the out of order execution
> issues and the conditions they have to be mitigated with rte*mb(). I
> wonder if having an explicit mfence in rte_sinlock_unlock wouldn't be just
> necessary to avoid "hairy" bugs. In addition, we would have
> rte_sinlock_unlock_no_mb used internally for performance reasons, and
> usable externally by advanced users.

Using lock prefix is lighter than using memory barrier and have the same 
effects.
But you're right about the bug in spinlocks.
I am going to send a patch for this.

-- 
Thomas


More information about the dev mailing list