ARM: DMA: top-down allocation in DMA coherent region
authorRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 8 Jan 2011 11:49:20 +0000 (11:49 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 23 Feb 2011 17:24:11 +0000 (17:24 +0000)
commit459c1517f9873b198af7dcded8d8cc84749bbb69
treeafe04e856b766b4c3244fcddf95b1c977f28f234
parent6fc31d54443bdc25a8166be15e3920a7e39d195d
ARM: DMA: top-down allocation in DMA coherent region

Achieve better usage of the DMA coherent region by doing top-down
allocation rather than bottom up.  If we ask for a 128kB allocation,
this will be aligned to 128kB and satisfied from the very bottom
address.  If we then ask for a 600kB allocation, this will be aligned
to 1MB, and we will have a 896kB hole.

Performing top-down allocation resolves this by allocating the 128kB
at the very top, and then the 600kB can come in below it without any
unnecessary wastage.

This problem was reported by Janusz Krzysztofik, who had 2 x 128kB +
1 x 640kB allocations which wouldn't fit into 1MB.

Tested-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/vmregion.c