Re: [PATCH rdma-core 06/14] i40iw: Get rid of unique barrier macros

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 06, 2017 at 12:18:09PM -0600, Shiraz Saleem wrote:
> On Thu, Feb 16, 2017 at 12:23:01PM -0700, Jason Gunthorpe wrote:
> > Use our standard versions from util instead. There doesn't seem
> > to be anything tricky here, but the inlined versions were like our
> > wc_wmb() barriers, not the wmb().
> > 
> > There appears to be no WC memory in this driver, so despite the comments,
> > these barriers are also making sure that user DMA data is flushed out. Make
> > them all wmb()
> > 
> > Guess at where the missing rmb() should be.
> > 
> > Signed-off-by: Jason Gunthorpe <jgunthorpe@xxxxxxxxxxxxxxxxxxxx>
> 
> 
> > @@ -780,6 +780,8 @@ static enum i40iw_status_code i40iw_cq_poll_completion(struct i40iw_cq_uk *cq,
> >  	if (polarity != cq->polarity)
> >  		return I40IW_ERR_QUEUE_EMPTY;
> >  
> > +	udma_from_device_barrier();
> > +
> 
> What is the need for the barrier here?

Every driver doing DMA needs to have a rmb(), I guessed this is
approximately the right place to put it for i10iw.

Within the PCI producer/consumer model the rmb needs to be placed
after the CPU observes a DMA write that proves other DMA writes have
occured.

It serializes the CPU with the write stream from PCI and prevents the
compiler/CPU from re-ordering dependent loads to be before the proving
load.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux