Le mercredi 15 janvier 2014 à 08:47 +0200, Eli Cohen a écrit :
> >
> > 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.
OK.
They are both needed to ensure ordered write (correct serialization), so
that the descriptors are valids after reading the record.
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