[PATCH] OMAP: fix DMA vs memory ordering
Tony Lindgren
tony at atomide.com
Mon Apr 16 13:58:49 EDT 2012
Hi,
* Russell King - ARM Linux <linux at arm.linux.org.uk> [120414 06:27]:
> Using coherent DMA memory with the OMAP DMA engine results in
> unpredictable behaviour due to memory ordering issues; as things stand,
> there is no guarantee that data written to coherent DMA memory will be
> visible to the DMA hardware.
>
> This is because the OMAP dma_write() accessor contains no barriers,
> necessary on ARMv6 and above. The effect of this can be seen in comments
> in the OMAP serial driver, which incorrectly talks about cache flushing
> for the coherent DMA stuff.
>
> Rather than adding barriers to the accessors, add it in the DMA support
> code just before we enable DMA, and just after we disable DMA. This
> avoids having barriers for every DMA register access.
Good catch.
I guess what you're saying is we don't want to do mb() for each completed
transfer that calls the driver specific callback function?
Other than that:
Acked-by: Tony Lindgren <tony at atomide.com>
More information about the linux-arm-kernel
mailing list