--- /dev/null
+From 9d1400cf79afb49584b4873eb22cd5130cb341db Mon Sep 17 00:00:00 2001
+From: Marek Szyprowski <m.szyprowski@samsung.com>
+Date: Tue, 26 Feb 2013 07:46:24 +0100
+Subject: ARM: DMA-mapping: add missing GFP_DMA flag for atomic buffer allocation
+
+From: Marek Szyprowski <m.szyprowski@samsung.com>
+
+commit 9d1400cf79afb49584b4873eb22cd5130cb341db upstream.
+
+Atomic pool should always be allocated from DMA zone if such zone is
+available in the system to avoid issues caused by limited dma mask of
+any of the devices used for making an atomic allocation.
+
+Reported-by: Krzysztof Halasa <khc@pm.waw.pl>
+Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mm/dma-mapping.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/mm/dma-mapping.c
++++ b/arch/arm/mm/dma-mapping.c
+@@ -330,6 +330,7 @@ static int __init atomic_pool_init(void)
+ {
+ struct dma_pool *pool = &atomic_pool;
+ pgprot_t prot = pgprot_dmacoherent(pgprot_kernel);
++ gfp_t gfp = GFP_KERNEL | GFP_DMA;
+ unsigned long nr_pages = pool->size >> PAGE_SHIFT;
+ unsigned long *bitmap;
+ struct page *page;
+@@ -348,8 +349,8 @@ static int __init atomic_pool_init(void)
+ if (IS_ENABLED(CONFIG_CMA))
+ ptr = __alloc_from_contiguous(NULL, pool->size, prot, &page);
+ else
+- ptr = __alloc_remap_buffer(NULL, pool->size, GFP_KERNEL, prot,
+- &page, NULL);
++ ptr = __alloc_remap_buffer(NULL, pool->size, gfp, prot, &page,
++ NULL);
+ if (ptr) {
+ int i;
+