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

Reply via email to