Merge master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa
[powerpc.git] / arch / x86_64 / kernel / pci-dma.c
index 2f5d832..03c9eee 100644 (file)
@@ -73,6 +73,9 @@ dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
        if (dma_mask == 0)
                dma_mask = 0xffffffff;
 
+       /* Don't invoke OOM killer */
+       gfp |= __GFP_NORETRY;
+
        /* Kludge to make it bug-to-bug compatible with i386. i386
           uses the normal dma_mask for alloc_coherent. */
        dma_mask &= *dev->dma_mask;
@@ -107,6 +110,9 @@ dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
                                goto again;
                        }
 
+                       /* Let low level make its own zone decisions */
+                       gfp &= ~(GFP_DMA32|GFP_DMA);
+
                        if (dma_ops->alloc_coherent)
                                return dma_ops->alloc_coherent(dev, size,
                                                           dma_handle, gfp);