Re: [PATCH 2/3] dma: override "dma_flags_set_dmaflush" for sn-ia64

From: akepner
Date: Wed Aug 22 2007 - 11:55:42 EST


On Tue, Aug 21, 2007 at 08:14:09PM -0500, James Bottomley wrote:
> On Tue, 2007-08-21 at 17:34 -0700, akepner@xxxxxxx wrote:
> .....
> > On Altix, DMA from a device isn't guaranteed to arrive in host memory
> > in the order it was sent from the device. This reordering can happen
> > in the NUMA interconnect (it's specifically not a PCI reordering.)
>
> This is mmiowb and read_relaxed() again, isn't it?
> .....

No, this is different.

This problem here has do with ordering writes from the device
to host memory. Specifically this problem can be manifested with
Infiniband - when a Completion Queue Entry is written by the IB
device, it indicates that data is available in host memory. But
the write to the Completion Queue can race with DMA of data.

(Completion Queues can be allocated by the kernel or in userspace.
The race described above can only happen when they are allocated
in userspace - kernel allocations of CQs use dma_alloc_coherent()
and so get the "barrier" attribute that's needed to prevent the
race. The proposed new interface would allow CQs, or anything else,
allocated with plain old malloc(), to set the barrier attribute.)

--
Arthur

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/