From 968b07cb167c93e6fe1e5d4672155338dbcca7bb Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 23 Oct 2009 10:07:22 +0100 Subject: [PATCH] xen/x86: fix GFP mask handling in dma_alloc_coherent() Ever since no longer pushing all memory into the DMA zone (c/s 355), explicitly setting GFP_DMA as well as not masking off GFP_DMA32 was unnecessarily restricting the pool from which suitable memory could be taken. Signed-off-by: Jan Beulich --- arch/i386/kernel/pci-dma-xen.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/i386/kernel/pci-dma-xen.c b/arch/i386/kernel/pci-dma-xen.c index a966c346..34316e74 100644 --- a/arch/i386/kernel/pci-dma-xen.c +++ b/arch/i386/kernel/pci-dma-xen.c @@ -218,7 +218,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size, u64 mask; /* ignore region specifiers */ - gfp &= ~(__GFP_DMA | __GFP_HIGHMEM); + gfp &= ~(__GFP_DMA | __GFP_HIGHMEM | __GFP_DMA32); if (mem) { int page = bitmap_find_free_region(mem->bitmap, mem->size, @@ -233,9 +233,6 @@ void *dma_alloc_coherent(struct device *dev, size_t size, return NULL; } - if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff)) - gfp |= GFP_DMA; - vstart = __get_free_pages(gfp, order); ret = (void *)vstart; -- 2.39.5