On Thu, 25 Oct 2012 13:46:41 +0000, Arnd Bergmann wrote:
quoted
Seems like the driver is too lazy and allocates everything coherent
to avoid the hassle of doing dma_map/dma_unmap operations when
needed, but I haven't looked in details at the driver yet to see if
it would be possible to switch those DMA coherent allocations into
non-coherent allocations + appropriate calls to the DMA operations.
Using coherent allocations is fine, I was wondering whether they need
to be atomic or not.
You're raising a good point here: all the dma_pool_alloc()
allocations done by sata_mv are GFP_KERNEL. So why are we having
problems with the /atomic/ coherent pool size? Is it the libata core
that's doing GFP_ATOMIC DMA coherent allocations. It doesn't seem so.
Something's odd.
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com