Le mardi 14 janvier 2014 à 17:45 +0200, Eli Cohen a écrit :
> Put a wmb() to make sure the doorbell record is visible to the HCA before we
> hit doorbell.
>
> Signed-off-by: Eli Cohen <[email protected]>
> ---
> drivers/infiniband/hw/mlx5/qp.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
> index a056c24..87b7fb1 100644
> --- a/drivers/infiniband/hw/mlx5/qp.c
> +++ b/drivers/infiniband/hw/mlx5/qp.c
> @@ -2251,6 +2251,10 @@ out:
>
> qp->db.db[MLX5_SND_DBR] = cpu_to_be32(qp->sq.cur_post);
>
> + /* Make sure doorbell record is visible to the HCA before
> + * we hit doorbell */
> + wmb();
> +
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 ?
> if (bf->need_lock)
> spin_lock(&bf->lock);
>
Regards.
--
Yann Droneaud
OPTEYA
--
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