On Mon, 2010-10-18 at 06:11 -0400, Bart Van Assche wrote: > On Sun, Oct 17, 2010 at 5:25 AM, David Dillow <[email protected]> wrote: > > [ ... ] > > +static int srp_response_common(struct srp_target_port *target, s32 > > req_delta, > > + void *rsp, int len) [ ... ] > > + > > + ib_dma_sync_single_for_cpu(dev, iu->dma, len, DMA_TO_DEVICE); > > + memcpy(iu->buf, rsp, len); > > + ib_dma_sync_single_for_device(dev, iu->dma, len, DMA_TO_DEVICE); > > [ ... ]
> Hi Dave, > > As far as I can see the above sync call applies to a buffer in the > tx_ring[]. Data in that buffer is only modified by the CPU and never > by the HCA. So why is the above sync call present ? Is that call > necessary ? In this instance, I copied existing practice from srp_queuecommand(). Documentation/DMA-API.txt seems to indicate we don't need the initial *_sync_for_cpu() since the device never writes to the buffer, but I seem to have an old memory that says we should do it anyways. Perhaps LKML can clear it up -- do we need to call *_sync_for_cpu() after a *sync_for_device(), even if the device never writes to the buffer? -- Dave Dillow National Center for Computational Science Oak Ridge National Laboratory (865) 241-6602 office -- 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
