Hello,
On Thursday, April 28, 2011 11:38 AM Russell King - ARM Linux wrote:
- Implement dma_alloc_noncoherent on ARM. Marek pointed out that this is needed, and it currently is not implemented, with an outdated comment explaining why it used to not be possible to do it.
dma_alloc_noncoherent is an entirely pointless API afaics.
I was about to ask what the point is ... (what is the expected semantic ? Memory that is reachable but not necessarily cache coherent ?)
As far as I can see, dma_alloc_noncoherent() should just be a wrapper around the normal page allocation function. I don't see it ever needing to do anything special - and the advantage of just being the normal page allocation function is that its properties are well known and architecture independent.
If there is IOMMU chip that supports pages larger than 4KiB then dma_alloc_noncoherent() might try to allocate such larger pages what will result in faster access to the buffer (lower iommu tlb miss ratio). For large buffers even 64KiB 'pages' gives a significant performance improvement.
Best regards