|
|
@@ -424,11 +424,13 @@ EXPORT_SYMBOL(pci_unmap_page);
|
|
|
else DMA_ADDRP is undefined. */
|
|
|
|
|
|
void *
|
|
|
-pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
|
|
|
+__pci_alloc_consistent(struct pci_dev *pdev, size_t size,
|
|
|
+ dma_addr_t *dma_addrp, gfp_t gfp)
|
|
|
{
|
|
|
void *cpu_addr;
|
|
|
long order = get_order(size);
|
|
|
- gfp_t gfp = GFP_ATOMIC;
|
|
|
+
|
|
|
+ gfp &= ~GFP_DMA;
|
|
|
|
|
|
try_again:
|
|
|
cpu_addr = (void *)__get_free_pages(gfp, order);
|
|
|
@@ -458,7 +460,7 @@ pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
|
|
|
|
|
|
return cpu_addr;
|
|
|
}
|
|
|
-EXPORT_SYMBOL(pci_alloc_consistent);
|
|
|
+EXPORT_SYMBOL(__pci_alloc_consistent);
|
|
|
|
|
|
/* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must
|
|
|
be values that were returned from pci_alloc_consistent. SIZE must
|