[ofa-general] [RFC 0/1] libmthca: CQ/DMA race on Altix
akepner at sgi.com
akepner at sgi.com
Mon Jul 16 14:56:07 PDT 2007
On Tue, Jul 17, 2007 at 12:40:25AM +0300, Muli Ben-Yehuda wrote:
> On Mon, Jul 16, 2007 at 09:52:53AM -0700, Roland Dreier wrote:
> ....
> > The memory being dealt with here is buffers that are only used by
> > the device and userspace. And the problem being solved is not
> > really that the memory needs to be coherent -- it is just that on
> > Altix, using coherent memory turns on another side effect that DMAs
> > to that memory flush other in-flight DMAs to other memory.
> >
> > So there are several reasons I don't like using dma_alloc_coherent()
> > to allocate this memory, and then mapping it into userspace (rather
> > than having userspace allocate it and then map it to the device, as
> > these patches do):
> >
> > - dma_alloc_coherent() has to allocate kernel address space for
> > memory, and in this case the kernel will never touch the memory.
> > So this is pure waste, and on 32-bit system, these allocations
> > could easily fail since kernel address space is scarce.
>
> But isn't this an Altix specific issue, which makes the 32-bit issue
> moot? (I'm assuming the "fix" to use dma_alloc_coherent() is only
> implemented for Altix, which is in-arguably ugly).
>
I believe Roland was referring to an alternate solution to the
problem. One that I did before, and which didn't involve changing
the dma_map_sg() prototype. (Instead it allocated memory with
dma_alloc_coherent() and then mmap()-ed it into user space. (See:
http://lists.openfabrics.org/pipermail/general/2007-January/032218.html
)
> > - The property being asked for is not really coherent memory but
> > rather "set the magic bit in the bus address so the Altix chipset
> > flushes other DMAs", and I think it would be cleaner to ask for
> > that explicitly rather than relying on the side effect of
> > coherent memory.
>
> That makes sense. However I didn't quite understand if the above means
> that you're ok with the patch posted, or prefer a different (third)
> approach?
>
Another patchset is imminent. This one won't change the dma_map_sg()
prototype. It'll pass extra flags (only for IA64_SGI_SN2) in the upper
bits of the direction argument. Otherwise it's similar to what I posted
at the start of this thread.
--
Arthur
More information about the general
mailing list