DMA attributes with dma_sync_single()

Moritz Fischer moritz.fischer at ettus.com
Wed Mar 20 17:27:11 EDT 2013


Hi there,

I was wondering whether setting DMA attributes like
DMA_ATTR_WRITE_BARRIER will have an effect
if I don't dma_unmap_single_attr() an area but merely
dma_sync_single() it after a transfer from
the device to the host memory. My problem is that I get an interrupt
(MSI) indicating that an (independent) DMA transfer is done,
where the interrupt flags get pushed (via a DMA write) to host memory.
>From time to time, the data of the other DMA transfer does not show up
in host memory in time with the interrupt.
I am trying to force coherency by using the DMA_ATTR_WRITE_BARRIER
on this status push (of the interrupt flags), to force the other
writes (device to host) to complete.

Does that seem reasonable?

Can anyone with insight shine some light on that?

It's a PCIe device, I'm running Fedora 18 with 3.8.3-201.fc18.x86_64.

Cheers,

Moritz



More information about the Kernelnewbies mailing list