>
> In linux-next, as of next-20140114, I'm seeing the write memory barrier
> before "qp->db.db[MLX5_SND_DBR] = cpu_to_be32(qp->sq.cur_post);"
> It was introduced by commit e126ba97dba9e:
>
> out:
> if (likely(nreq)) {
> qp->sq.head += nreq;
>
> /* Make sure that descriptors are written before
> * updating doorbell record and ringing the doorbell
> */
> wmb();
>
> qp->db.db[MLX5_SND_DBR] = cpu_to_be32(qp->sq.cur_post);
>
> if (bf->need_lock)
> spin_lock(&bf->lock);
>
> So this add a second wmb().
> Is it really necessary ?
>
Yes both are required. The first one makes sure that the descriptors
are visible before update of the doorbell record, and the newly added
one is required to ensure the doorbell record is visible before the
hardware is notified.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html