projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
c36ef4b
)
ARM: 7172/1: dma: Drop GFP_COMP for DMA memory allocations
author
Sumit Bhattacharya
<
[email protected]
>
Wed, 23 Nov 2011 23:47:12 +0000
(
00:47
+0100)
committer
Russell King
<
[email protected]
>
Sat, 26 Nov 2011 21:58:53 +0000
(21:58 +0000)
dma_alloc_coherent wants to split pages after allocation in order to
reduce the memory footprint. This does not work well with GFP_COMP
pages, so drop this flag before allocation.
This patch is ported from arch/avr32
(commit
3611553ef985ef7c5863c8a94641738addd04cff
).
[swarren: s/HUGETLB_PAGE/HUGETLBFS/ in comment, minor comment cleanup]
Signed-off-by: Sumit Bhattacharya <
[email protected]
>
Tested-by: Varun Colbert <
[email protected]
>
Signed-off-by: Stephen Warren <
[email protected]
>
Signed-off-by: Russell King <
[email protected]
>
arch/arm/mm/dma-mapping.c
patch
|
blob
|
history
diff --git
a/arch/arm/mm/dma-mapping.c
b/arch/arm/mm/dma-mapping.c
index ab584569930e3f17628f8fe05659e992f9910309..1aa664a1999fce45c2548726b50b6fa924608ec2 100644
(file)
--- a/
arch/arm/mm/dma-mapping.c
+++ b/
arch/arm/mm/dma-mapping.c
@@
-332,6
+332,15
@@
__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
struct page *page;
void *addr;
+ /*
+ * Following is a work-around (a.k.a. hack) to prevent pages
+ * with __GFP_COMP being passed to split_page() which cannot
+ * handle them. The real problem is that this flag probably
+ * should be 0 on ARM as it is not supported on this
+ * platform; see CONFIG_HUGETLBFS.
+ */
+ gfp &= ~(__GFP_COMP);
+
*handle = ~0;
size = PAGE_ALIGN(size);