]> git.hungrycats.org Git - linux/commitdiff
Add GFP_ flags to parisc DMA API implementation
authorJames Bottomley <jejb@raven.il.steeleye.com>
Mon, 13 Jan 2003 15:06:56 +0000 (09:06 -0600)
committerJames Bottomley <jejb@raven.il.steeleye.com>
Mon, 13 Jan 2003 15:06:56 +0000 (09:06 -0600)
arch/parisc/kernel/pci-dma.c
drivers/parisc/ccio-dma.c
include/asm-parisc/dma-mapping.h

index c24ea7a7e7f08df54acf44df2073dc3a187f4dc0..13ddc47bcd38904fa9fee6179f156233266b9325 100644 (file)
@@ -349,7 +349,7 @@ pcxl_dma_init(void)
 
 __initcall(pcxl_dma_init);
 
-static void * pa11_dma_alloc_consistent (struct device *dev, size_t size, dma_addr_t *dma_handle)
+static void * pa11_dma_alloc_consistent (struct device *dev, size_t size, dma_addr_t *dma_handle, int flag)
 {
        unsigned long vaddr;
        unsigned long paddr;
@@ -358,7 +358,7 @@ static void * pa11_dma_alloc_consistent (struct device *dev, size_t size, dma_ad
        order = get_order(size);
        size = 1 << (order + PAGE_SHIFT);
        vaddr = pcxl_alloc_range(size);
-       paddr = __get_free_pages(GFP_ATOMIC, order);
+       paddr = __get_free_pages(flag, order);
        flush_kernel_dcache_range(paddr, size);
        paddr = __pa(paddr);
        map_uncached_pages(vaddr, size, paddr);
@@ -482,18 +482,18 @@ struct hppa_dma_ops pcxl_dma_ops = {
 };
 
 static void *fail_alloc_consistent(struct device *dev, size_t size,
-                                  dma_addr_t *dma_handle)
+                                  dma_addr_t *dma_handle, int flag)
 {
        return NULL;
 }
 
 static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size,
-                                         dma_addr_t *dma_handle)
+                                         dma_addr_t *dma_handle, int flag)
 {
        void *addr = NULL;
 
        /* rely on kmalloc to be cacheline aligned */
-       addr = kmalloc(size, GFP_KERNEL);
+       addr = kmalloc(size, flag);
        if(addr)
                *dma_handle = (dma_addr_t)virt_to_phys(addr);
 
index b179292a8f602e49c00668e20acb030e8fff6104..9c5af58ecab4c05aa45de1d897aeaaf6fd27d2fa 100644 (file)
@@ -728,7 +728,7 @@ ccio_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
  * This function implements the pci_alloc_consistent function.
  */
 static void * 
-ccio_alloc_consistent(struct device *dev, size_t size, dma_addr_t *dma_handle)
+ccio_alloc_consistent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag)
 {
       void *ret;
 #if 0
@@ -741,7 +741,7 @@ ccio_alloc_consistent(struct device *dev, size_t size, dma_addr_t *dma_handle)
                return 0;
        }
 #endif
-        ret = (void *) __get_free_pages(GFP_ATOMIC, get_order(size));
+        ret = (void *) __get_free_pages(flag, get_order(size));
 
        if (ret) {
                memset(ret, 0, size);
index c93800a130cda50349e32f5455e08127bedbe660..2428762027b3b37634f814419559f50f2408b9bd 100644 (file)
@@ -9,8 +9,8 @@
 */
 struct hppa_dma_ops {
        int  (*dma_supported)(struct device *dev, u64 mask);
-       void *(*alloc_consistent)(struct device *dev, size_t size, dma_addr_t *iova);
-       void *(*alloc_noncoherent)(struct device *dev, size_t size, dma_addr_t *iova);
+       void *(*alloc_consistent)(struct device *dev, size_t size, dma_addr_t *iova, int flag);
+       void *(*alloc_noncoherent)(struct device *dev, size_t size, dma_addr_t *iova, int flag);
        void (*free_consistent)(struct device *dev, size_t size, void *vaddr, dma_addr_t iova);
        dma_addr_t (*map_single)(struct device *dev, void *addr, size_t size, enum dma_data_direction direction);
        void (*unmap_single)(struct device *dev, dma_addr_t iova, size_t size, enum dma_data_direction direction);
@@ -46,15 +46,17 @@ extern struct hppa_dma_ops pcx_dma_ops;
 extern struct hppa_dma_ops *hppa_dma_ops;
 
 static inline void *
-dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle)
+dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
+                  int flag)
 {
-       return hppa_dma_ops->alloc_consistent(dev, size, dma_handle);
+       return hppa_dma_ops->alloc_consistent(dev, size, dma_handle, flag);
 }
 
 static inline void *
-dma_alloc_noncoherent(struct device *dev, size_t size, dma_addr_t *dma_handle)
+dma_alloc_noncoherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
+                     int flag)
 {
-       return hppa_dma_ops->alloc_noncoherent(dev, size, dma_handle);
+       return hppa_dma_ops->alloc_noncoherent(dev, size, dma_handle, flag);
 }
 
 static inline void