Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1287541 > unrolled thread

[PATCH v2] MIPS: fix DMA contiguous allocation

Started byQais Yousef <qais.yousef@imgtec.com>
First post2015-12-09 16:00 +0100
Last post2015-12-09 16:10 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2] MIPS: fix DMA contiguous allocation Qais Yousef <qais.yousef@imgtec.com> - 2015-12-09 16:00 +0100
    Re: [PATCH v2] MIPS: fix DMA contiguous allocation Mel Gorman <mgorman@techsingularity.net> - 2015-12-09 16:10 +0100

#1287541 — [PATCH v2] MIPS: fix DMA contiguous allocation

FromQais Yousef <qais.yousef@imgtec.com>
Date2015-12-09 16:00 +0100
Subject[PATCH v2] MIPS: fix DMA contiguous allocation
Message-ID<qDOnM-1h9-21@gated-at.bofh.it>
Recent changes to how GFP_ATOMIC is defined seems to have broken the condition
to use mips_alloc_from_contiguous() in mips_dma_alloc_coherent().

I couldn't bottom out the exact change but I think it's this one

d0164adc89f6 (mm, page_alloc: distinguish between being unable to sleep,
unwilling to sleep and avoiding waking kswapd)

From what I see GFP_ATOMIC has multiple bits set and the check for !(gfp
& GFP_ATOMIC) isn't enough.

The reason behind this condition is to check whether we can potentially do
a sleeping memory allocation. Use gfpflags_allow_blocking() instead which
should be more robust.

Signed-off-by: Qais Yousef <qais.yousef@imgtec.com>
---
 arch/mips/mm/dma-default.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index d8117be729a2..730d394ce5f0 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -145,7 +145,7 @@ static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
 
 	gfp = massage_gfp_flags(dev, gfp);
 
-	if (IS_ENABLED(CONFIG_DMA_CMA) && !(gfp & GFP_ATOMIC))
+	if (IS_ENABLED(CONFIG_DMA_CMA) && gfpflags_allow_blocking(gfp))
 		page = dma_alloc_from_contiguous(dev,
 					count, get_order(size));
 	if (!page)
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1287548

FromMel Gorman <mgorman@techsingularity.net>
Date2015-12-09 16:10 +0100
Message-ID<qDOxs-1zF-23@gated-at.bofh.it>
In reply to#1287541
On Wed, Dec 09, 2015 at 02:54:05PM +0000, Qais Yousef wrote:
> Recent changes to how GFP_ATOMIC is defined seems to have broken the condition
> to use mips_alloc_from_contiguous() in mips_dma_alloc_coherent().
> 
> I couldn't bottom out the exact change but I think it's this one
> 
> d0164adc89f6 (mm, page_alloc: distinguish between being unable to sleep,
> unwilling to sleep and avoiding waking kswapd)
> 
> From what I see GFP_ATOMIC has multiple bits set and the check for !(gfp
> & GFP_ATOMIC) isn't enough.
> 
> The reason behind this condition is to check whether we can potentially do
> a sleeping memory allocation. Use gfpflags_allow_blocking() instead which
> should be more robust.
> 
> Signed-off-by: Qais Yousef <qais.yousef@imgtec.com>

Acked-by: Mel Gorman <mgorman@techsingularity.net>

-- 
Mel Gorman
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web