dma-mapping: merge <linux/dma-contiguous.h> into <linux/dma-map-ops.h>
authorChristoph Hellwig <hch@lst.de>
Fri, 11 Sep 2020 08:56:52 +0000 (10:56 +0200)
committerChristoph Hellwig <hch@lst.de>
Tue, 6 Oct 2020 05:07:04 +0000 (07:07 +0200)
Merge dma-contiguous.h into dma-map-ops.h, after removing the comment
describing the contiguous allocator into kernel/dma/contigous.c.

Signed-off-by: Christoph Hellwig <hch@lst.de>
28 files changed:
Documentation/admin-guide/kernel-parameters.txt
arch/arm/mach-davinci/devices-da8xx.c
arch/arm/mach-shmobile/setup-rcar-gen2.c
arch/arm/mm/dma-mapping.c
arch/arm/mm/init.c
arch/arm64/mm/init.c
arch/csky/kernel/setup.c
arch/csky/mm/dma-mapping.c
arch/microblaze/mm/init.c
arch/mips/kernel/setup.c
arch/mips/mm/dma-noncoherent.c
arch/s390/kernel/setup.c
arch/x86/include/asm/dma-mapping.h
arch/x86/kernel/setup.c
arch/xtensa/kernel/pci-dma.c
arch/xtensa/mm/init.c
drivers/dma-buf/heaps/cma_heap.c
drivers/iommu/amd/iommu.c
drivers/iommu/dma-iommu.c
drivers/iommu/intel/iommu.c
drivers/media/platform/exynos4-is/fimc-is.c
include/linux/dma-contiguous.h [deleted file]
include/linux/dma-map-ops.h
kernel/dma/Kconfig
kernel/dma/contiguous.c
kernel/dma/direct.c
kernel/dma/ops_helpers.c
kernel/dma/pool.c

index e464cf0b502591473e2f10b984cc90d10497ceaa..7657e00e83ca382fb9a3fab2cab11ecf2db9a96a 100644 (file)
                        placement constraint by the physical address range of
                        memory allocations. A value of 0 disables CMA
                        altogether. For more information, see
-                       include/linux/dma-contiguous.h
+                       kernel/dma/contiguous.c
 
        cma_pernuma=nn[MG]
                        [ARM64,KNL]
index 1207eabe8d1cc43a5c9b386526097520cd4fa581..bb368938fc49214faae7be0ed62dbc02196a2786 100644 (file)
@@ -10,7 +10,7 @@
 #include <linux/clk-provider.h>
 #include <linux/clk.h>
 #include <linux/clkdev.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dmaengine.h>
 #include <linux/init.h>
 #include <linux/io.h>
index c42ff8c314c82d56e32c7b729bb62551fa7251c4..e00f5b3b929362ccdf99b8ad9317ece14a478c8f 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <linux/clocksource.h>
 #include <linux/device.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
 #include <linux/memblock.h>
index 8bf0bc6bc3117257c5ae1e41a29343609954d911..154c24cec94c74cbe568c041e9593d40ad4d13e0 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/dma-direct.h>
 #include <linux/dma-map-ops.h>
 #include <linux/dma-noncoherent.h>
-#include <linux/dma-contiguous.h>
 #include <linux/highmem.h>
 #include <linux/memblock.h>
 #include <linux/slab.h>
index 000c1b48e9734f4e3169fccbdcb24ea7a93f16e7..ab1d1931a3525efcff52a6b79e82d65f1a17d126 100644 (file)
@@ -18,7 +18,7 @@
 #include <linux/highmem.h>
 #include <linux/gfp.h>
 #include <linux/memblock.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/sizes.h>
 #include <linux/stop_machine.h>
 #include <linux/swiotlb.h>
index f1c75957ff3c24050bae448c27712dff2a354314..1b591ddb28b01b39ec30724f78a854486d98b5fd 100644 (file)
@@ -21,8 +21,7 @@
 #include <linux/of.h>
 #include <linux/of_fdt.h>
 #include <linux/dma-direct.h>
-#include <linux/dma-mapping.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/efi.h>
 #include <linux/swiotlb.h>
 #include <linux/vmalloc.h>
index 0481f4e34538ea87cc30af99f869cb7ea9d26570..e4cab16056d6067ac2e41490ddad7f6f2f7db15d 100644 (file)
@@ -7,7 +7,7 @@
 #include <linux/of.h>
 #include <linux/of_fdt.h>
 #include <linux/start_kernel.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/screen_info.h>
 #include <asm/sections.h>
 #include <asm/mmu_context.h>
index 8f6571ae27c867ad350c1eb2779e4e65b5fbd0b3..3d9ff26c4bb4d8fb05e3f3203cfedf8e03bb4ebc 100644 (file)
@@ -2,8 +2,7 @@
 // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
 
 #include <linux/cache.h>
-#include <linux/dma-mapping.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dma-noncoherent.h>
 #include <linux/genalloc.h>
 #include <linux/highmem.h>
index 3344d4a1fe890c9af7fbb8ba62aaad4ac6d797a0..7659a8b86580fd43f23882ccfc990cebb53eb7af 100644 (file)
@@ -7,7 +7,7 @@
  * for more details.
  */
 
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/memblock.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
index bf5f5acab0a82ff9c9db138797e5006ccf5ee6ca..464bfd3957ae9682ce81acf828ad1078b9136d1e 100644 (file)
@@ -24,7 +24,7 @@
 #include <linux/kexec.h>
 #include <linux/sizes.h>
 #include <linux/device.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/decompress/generic.h>
 #include <linux/of_fdt.h>
 #include <linux/of_reserved_mem.h>
index f4e8404ee0490ddd57e057111e8094a4b05897fa..22d99ccc70c81eaead7a5a7c30e151769f609f75 100644 (file)
@@ -7,7 +7,6 @@
 #include <linux/dma-direct.h>
 #include <linux/dma-map-ops.h>
 #include <linux/dma-noncoherent.h>
-#include <linux/dma-contiguous.h>
 #include <linux/highmem.h>
 
 #include <asm/cache.h>
index c2c1b4e723eafbd91ea7d0e9cbd4d2bd1f205167..151092565a27041be558ccf882448be8aa4581db 100644 (file)
@@ -37,7 +37,7 @@
 #include <linux/root_dev.h>
 #include <linux/console.h>
 #include <linux/kernel_stat.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/device.h>
 #include <linux/notifier.h>
 #include <linux/pfn.h>
index fed67eafcaccc21a8b0325f07facde989463fce1..e0c380b3ec1407c67b55829f5cba6b896d0b661e 100644 (file)
@@ -11,7 +11,6 @@
 #include <linux/dma-debug.h>
 #include <asm/io.h>
 #include <asm/swiotlb.h>
-#include <linux/dma-contiguous.h>
 
 extern int iommu_merge;
 extern int panic_on_overflow;
index 9286fa9d575e6de253766f45db9eaaf143b7005d..e8155e85bd8f3444cf4d48fefb828bb98bcd67ce 100644 (file)
@@ -7,7 +7,7 @@
  */
 #include <linux/console.h>
 #include <linux/crash_dump.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dmi.h>
 #include <linux/efi.h>
 #include <linux/init_ohci1394_dma.h>
index 17c4384f8495582f45774041251fc9f3d40f73e1..790dbe022a07960428b3a4a143873a99097f2426 100644 (file)
@@ -11,7 +11,7 @@
  * Joe Taylor <joe@tensilica.com, joetylr@yahoo.com>
  */
 
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dma-noncoherent.h>
 #include <linux/dma-direct.h>
 #include <linux/gfp.h>
index a05b306cf371bf3c31cac72471ef75255e569d70..8079007842ac8e43eae8e1dd1122aca8c03176b4 100644 (file)
@@ -26,7 +26,7 @@
 #include <linux/nodemask.h>
 #include <linux/mm.h>
 #include <linux/of_fdt.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 
 #include <asm/bootparam.h>
 #include <asm/page.h>
index 626cf7fd033afdc63e6d13fffa4adb85f13698fa..e55384dc115ba2a802129d7b50f0300c6aab0930 100644 (file)
@@ -10,7 +10,7 @@
 #include <linux/device.h>
 #include <linux/dma-buf.h>
 #include <linux/dma-heap.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/err.h>
 #include <linux/errno.h>
 #include <linux/highmem.h>
index 10e4200d355204d51ac988477874b3c2be2976c3..5396eb8d730bca5f2e04fd6bf24a9059e892795b 100644 (file)
@@ -18,7 +18,7 @@
 #include <linux/slab.h>
 #include <linux/debugfs.h>
 #include <linux/scatterlist.h>
-#include <linux/dma-mapping.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dma-direct.h>
 #include <linux/dma-iommu.h>
 #include <linux/iommu-helper.h>
@@ -28,7 +28,6 @@
 #include <linux/export.h>
 #include <linux/irq.h>
 #include <linux/msi.h>
-#include <linux/dma-contiguous.h>
 #include <linux/irqdomain.h>
 #include <linux/percpu.h>
 #include <linux/iova.h>
index d2e3f26228151fb77e5c94129b785b9b3f39a567..22c221bba13e2fe632b61fa52c61b9f6fc1f44ea 100644 (file)
@@ -11,7 +11,6 @@
 #include <linux/acpi_iort.h>
 #include <linux/device.h>
 #include <linux/dma-map-ops.h>
-#include <linux/dma-contiguous.h>
 #include <linux/dma-iommu.h>
 #include <linux/dma-noncoherent.h>
 #include <linux/gfp.h>
index bd3470142b0678375b78fee57fd01f00c37732fd..0c5b4500ae83d3be1c5ca87f6307c3adecd2498e 100644 (file)
@@ -37,7 +37,7 @@
 #include <linux/dmi.h>
 #include <linux/pci-ats.h>
 #include <linux/memblock.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dma-direct.h>
 #include <linux/crash_dump.h>
 #include <linux/numa.h>
index a474014f0a0fa5dc9e212d2e36a69ac17638bd28..32f5982afa1ab2a11cb9ba9ffb998741003cdf2e 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/device.h>
 #include <linux/debugfs.h>
 #include <linux/delay.h>
-#include <linux/dma-contiguous.h>
 #include <linux/errno.h>
 #include <linux/firmware.h>
 #include <linux/interrupt.h>
diff --git a/include/linux/dma-contiguous.h b/include/linux/dma-contiguous.h
deleted file mode 100644 (file)
index f9ce1ee..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __LINUX_CMA_H
-#define __LINUX_CMA_H
-
-/*
- * Contiguous Memory Allocator for DMA mapping framework
- * Copyright (c) 2010-2011 by Samsung Electronics.
- * Written by:
- *     Marek Szyprowski <m.szyprowski@samsung.com>
- *     Michal Nazarewicz <mina86@mina86.com>
- */
-
-/*
- * Contiguous Memory Allocator
- *
- *   The Contiguous Memory Allocator (CMA) makes it possible to
- *   allocate big contiguous chunks of memory after the system has
- *   booted.
- *
- * Why is it needed?
- *
- *   Various devices on embedded systems have no scatter-getter and/or
- *   IO map support and require contiguous blocks of memory to
- *   operate.  They include devices such as cameras, hardware video
- *   coders, etc.
- *
- *   Such devices often require big memory buffers (a full HD frame
- *   is, for instance, more then 2 mega pixels large, i.e. more than 6
- *   MB of memory), which makes mechanisms such as kmalloc() or
- *   alloc_page() ineffective.
- *
- *   At the same time, a solution where a big memory region is
- *   reserved for a device is suboptimal since often more memory is
- *   reserved then strictly required and, moreover, the memory is
- *   inaccessible to page system even if device drivers don't use it.
- *
- *   CMA tries to solve this issue by operating on memory regions
- *   where only movable pages can be allocated from.  This way, kernel
- *   can use the memory for pagecache and when device driver requests
- *   it, allocated pages can be migrated.
- *
- * Driver usage
- *
- *   CMA should not be used by the device drivers directly. It is
- *   only a helper framework for dma-mapping subsystem.
- *
- *   For more information, see kernel-docs in kernel/dma/contiguous.c
- */
-
-#ifdef __KERNEL__
-
-#include <linux/device.h>
-#include <linux/mm.h>
-
-struct cma;
-struct page;
-
-#ifdef CONFIG_DMA_CMA
-
-extern struct cma *dma_contiguous_default_area;
-
-static inline struct cma *dev_get_cma_area(struct device *dev)
-{
-       if (dev && dev->cma_area)
-               return dev->cma_area;
-       return dma_contiguous_default_area;
-}
-
-void dma_contiguous_reserve(phys_addr_t addr_limit);
-
-int __init dma_contiguous_reserve_area(phys_addr_t size, phys_addr_t base,
-                                      phys_addr_t limit, struct cma **res_cma,
-                                      bool fixed);
-
-struct page *dma_alloc_from_contiguous(struct device *dev, size_t count,
-                                      unsigned int order, bool no_warn);
-bool dma_release_from_contiguous(struct device *dev, struct page *pages,
-                                int count);
-struct page *dma_alloc_contiguous(struct device *dev, size_t size, gfp_t gfp);
-void dma_free_contiguous(struct device *dev, struct page *page, size_t size);
-
-#else
-
-static inline struct cma *dev_get_cma_area(struct device *dev)
-{
-       return NULL;
-}
-
-static inline void dma_contiguous_reserve(phys_addr_t limit) { }
-
-static inline int dma_contiguous_reserve_area(phys_addr_t size, phys_addr_t base,
-                                      phys_addr_t limit, struct cma **res_cma,
-                                      bool fixed)
-{
-       return -ENOSYS;
-}
-
-static inline
-struct page *dma_alloc_from_contiguous(struct device *dev, size_t count,
-                                      unsigned int order, bool no_warn)
-{
-       return NULL;
-}
-
-static inline
-bool dma_release_from_contiguous(struct device *dev, struct page *pages,
-                                int count)
-{
-       return false;
-}
-
-/* Use fallback alloc() and free() when CONFIG_DMA_CMA=n */
-static inline struct page *dma_alloc_contiguous(struct device *dev, size_t size,
-               gfp_t gfp)
-{
-       return NULL;
-}
-
-static inline void dma_free_contiguous(struct device *dev, struct page *page,
-               size_t size)
-{
-       __free_pages(page, get_order(size));
-}
-
-#endif
-
-#ifdef CONFIG_DMA_PERNUMA_CMA
-void dma_pernuma_cma_reserve(void);
-#else
-static inline void dma_pernuma_cma_reserve(void) { }
-#endif
-
-#endif
-
-#endif
index 4b4ba5bdcf6a8dd1bd3a2437e8788a2390deee71..474fc81bd4921c0daae3c4b34a2f218a62887b3f 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <linux/dma-mapping.h>
 
+struct cma;
+
 struct dma_map_ops {
        void *(*alloc)(struct device *dev, size_t size,
                        dma_addr_t *dma_handle, gfp_t gfp,
@@ -94,6 +96,69 @@ static inline void set_dma_ops(struct device *dev,
 }
 #endif /* CONFIG_DMA_OPS */
 
+#ifdef CONFIG_DMA_CMA
+extern struct cma *dma_contiguous_default_area;
+
+static inline struct cma *dev_get_cma_area(struct device *dev)
+{
+       if (dev && dev->cma_area)
+               return dev->cma_area;
+       return dma_contiguous_default_area;
+}
+
+void dma_contiguous_reserve(phys_addr_t addr_limit);
+int __init dma_contiguous_reserve_area(phys_addr_t size, phys_addr_t base,
+               phys_addr_t limit, struct cma **res_cma, bool fixed);
+
+struct page *dma_alloc_from_contiguous(struct device *dev, size_t count,
+                                      unsigned int order, bool no_warn);
+bool dma_release_from_contiguous(struct device *dev, struct page *pages,
+                                int count);
+struct page *dma_alloc_contiguous(struct device *dev, size_t size, gfp_t gfp);
+void dma_free_contiguous(struct device *dev, struct page *page, size_t size);
+#else /* CONFIG_DMA_CMA */
+static inline struct cma *dev_get_cma_area(struct device *dev)
+{
+       return NULL;
+}
+static inline void dma_contiguous_reserve(phys_addr_t limit)
+{
+}
+static inline int dma_contiguous_reserve_area(phys_addr_t size,
+               phys_addr_t base, phys_addr_t limit, struct cma **res_cma,
+               bool fixed)
+{
+       return -ENOSYS;
+}
+static inline struct page *dma_alloc_from_contiguous(struct device *dev,
+               size_t count, unsigned int order, bool no_warn)
+{
+       return NULL;
+}
+static inline bool dma_release_from_contiguous(struct device *dev,
+               struct page *pages, int count)
+{
+       return false;
+}
+/* Use fallback alloc() and free() when CONFIG_DMA_CMA=n */
+static inline struct page *dma_alloc_contiguous(struct device *dev, size_t size,
+               gfp_t gfp)
+{
+       return NULL;
+}
+static inline void dma_free_contiguous(struct device *dev, struct page *page,
+               size_t size)
+{
+       __free_pages(page, get_order(size));
+}
+#endif /* CONFIG_DMA_CMA*/
+
+#ifdef CONFIG_DMA_PERNUMA_CMA
+void dma_pernuma_cma_reserve(void);
+#else
+static inline void dma_pernuma_cma_reserve(void) { }
+#endif /* CONFIG_DMA_PERNUMA_CMA */
+
 #ifdef CONFIG_DMA_DECLARE_COHERENT
 int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr,
                dma_addr_t device_addr, size_t size);
index 647996702bc9e60bec2bd5d847f5bb6dd4e276e7..c99de4a214588941652f3ab6c76e29fdc9c8b779 100644 (file)
@@ -118,7 +118,7 @@ config DMA_CMA
          You can disable CMA by specifying "cma=0" on the kernel's command
          line.
 
-         For more information see <include/linux/dma-contiguous.h>.
+         For more information see <kernel/dma/contiguous.c>.
          If unsure, say "n".
 
 if  DMA_CMA
index bf05ec2256e1490355709cf9b12345c463ceddb0..6bfb763fff6fca9d138ce3382362f509abbf93ce 100644 (file)
@@ -5,6 +5,34 @@
  * Written by:
  *     Marek Szyprowski <m.szyprowski@samsung.com>
  *     Michal Nazarewicz <mina86@mina86.com>
+ *
+ * Contiguous Memory Allocator
+ *
+ *   The Contiguous Memory Allocator (CMA) makes it possible to
+ *   allocate big contiguous chunks of memory after the system has
+ *   booted.
+ *
+ * Why is it needed?
+ *
+ *   Various devices on embedded systems have no scatter-getter and/or
+ *   IO map support and require contiguous blocks of memory to
+ *   operate.  They include devices such as cameras, hardware video
+ *   coders, etc.
+ *
+ *   Such devices often require big memory buffers (a full HD frame
+ *   is, for instance, more then 2 mega pixels large, i.e. more than 6
+ *   MB of memory), which makes mechanisms such as kmalloc() or
+ *   alloc_page() ineffective.
+ *
+ *   At the same time, a solution where a big memory region is
+ *   reserved for a device is suboptimal since often more memory is
+ *   reserved then strictly required and, moreover, the memory is
+ *   inaccessible to page system even if device drivers don't use it.
+ *
+ *   CMA tries to solve this issue by operating on memory regions
+ *   where only movable pages can be allocated from.  This way, kernel
+ *   can use the memory for pagecache and when device driver requests
+ *   it, allocated pages can be migrated.
  */
 
 #define pr_fmt(fmt) "cma: " fmt
@@ -21,7 +49,7 @@
 #include <linux/memblock.h>
 #include <linux/err.h>
 #include <linux/sizes.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/cma.h>
 
 #ifdef CONFIG_CMA_SIZE_MBYTES
index 8cf5689a8c40445ec81df2a85fc35142d62bd411..87697c86f0b82a8464994ad2f0e13d5ee3791967 100644 (file)
@@ -10,7 +10,6 @@
 #include <linux/dma-direct.h>
 #include <linux/dma-map-ops.h>
 #include <linux/scatterlist.h>
-#include <linux/dma-contiguous.h>
 #include <linux/pfn.h>
 #include <linux/vmalloc.h>
 #include <linux/set_memory.h>
index 60d7b6cdfd8d15f75ea163938346ddd8c32cf5a1..bc80fd2648bcf2f063529823f91e9102ae1c3188 100644 (file)
@@ -3,7 +3,6 @@
  * Helpers for DMA ops implementations.  These generally rely on the fact that
  * the allocated memory contains normal pages in the direct kernel mapping.
  */
-#include <linux/dma-contiguous.h>
 #include <linux/dma-map-ops.h>
 #include <linux/dma-noncoherent.h>
 
index fe11643ff9cc7b9fb3b69be76ce117dc9ef4a0b8..c9fb5c3d8bd002d0b4a2b2399f415d8d33d11f94 100644 (file)
@@ -5,7 +5,7 @@
  */
 #include <linux/cma.h>
 #include <linux/debugfs.h>
-#include <linux/dma-contiguous.h>
+#include <linux/dma-map-ops.h>
 #include <linux/dma-direct.h>
 #include <linux/dma-noncoherent.h>
 #include <linux/init.h>