| /linux/mm/ | 
| H A D | cma.c | 15 #define pr_fmt(fmt) "cma: " fmt27 #include <linux/cma.h>
 31 #include <trace/events/cma.h>
 34 #include "cma.h"
 36 struct cma cma_areas[MAX_CMA_AREAS];
 39 phys_addr_t cma_get_base(const struct cma *cma)  in cma_get_base()  argument
 41 	WARN_ON_ONCE(cma->nranges != 1);  in cma_get_base()
 42 	return PFN_PHYS(cma->ranges[0].base_pfn);  in cma_get_base()
 45 unsigned long cma_get_size(const struct cma *cma)  in cma_get_size()  argument
 47 	return cma->count << PAGE_SHIFT;  in cma_get_size()
 [all …]
 
 | 
| H A D | cma.h | 10 	struct cma *cma;  member39 struct cma {  struct
 53 	/* the number of CMA page successful allocations */
 55 	/* the number of CMA page allocation failures */
 57 	/* the number of CMA page released */
 74 extern struct cma cma_areas[MAX_CMA_AREAS];  argument
 77 static inline unsigned long cma_bitmap_maxno(struct cma *cma,  in cma_bitmap_maxno()  argument
 80 	return cmr->count >> cma->order_per_bit;  in cma_bitmap_maxno()
 84 void cma_sysfs_account_success_pages(struct cma *cma, unsigned long nr_pages);
 85 void cma_sysfs_account_fail_pages(struct cma *cma, unsigned long nr_pages);
 [all …]
 
 | 
| H A D | hugetlb_cma.c | 4 #include <linux/cma.h>16 static struct cma *hugetlb_cma[MAX_NUMNODES];
 58 	struct cma *cma;  in hugetlb_cma_alloc_bootmem()  local
 62 	cma = hugetlb_cma[*nid];  in hugetlb_cma_alloc_bootmem()
 63 	m = cma_reserve_early(cma, huge_page_size(h));  in hugetlb_cma_alloc_bootmem()
 69 			cma = hugetlb_cma[node];  in hugetlb_cma_alloc_bootmem()
 70 			if (!cma || node == *nid)  in hugetlb_cma_alloc_bootmem()
 72 			m = cma_reserve_early(cma, huge_page_size(h));  in hugetlb_cma_alloc_bootmem()
 82 		m->cma = cma;  in hugetlb_cma_alloc_bootmem()
 144 	 * HugeTLB CMA reservation is required for gigantic  in hugetlb_cma_reserve()
 [all …]
 
 | 
| H A D | Kconfig | 653 	depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU682 	def_bool (MEMORY_ISOLATION && COMPACTION) || CMA
 951 config CMA  config
 959 	  CMA reserves a region of memory and allows only movable pages to
 967 	bool "CMA debugfs interface"
 968 	depends on CMA && DEBUG_FS
 970 	  Turns on the DebugFS interface for CMA.
 973 	bool "CMA information through sysfs interface"
 974 	depends on CMA && SYSFS
 977 	  from CMA.
 [all …]
 
 | 
| /linux/kernel/dma/ | 
| H A D | contiguous.c | 11  *   The Contiguous Memory Allocator (CMA) makes it possible to32  *   CMA tries to solve this issue by operating on memory regions
 38 #define pr_fmt(fmt) "cma: " fmt
 46 #include <linux/cma.h>
 55 struct cma *dma_contiguous_default_area;
 58  * Default global CMA area size can be defined in kernel's .config.
 64  * Users, who want to set the size of global CMA area for their system
 65  * should use cma= kernel parameter.
 91 early_param("cma", early_cma);
 95 static struct cma *dma_contiguous_numa_area[MAX_NUMNODES];
 [all …]
 
 | 
| H A D | Kconfig | 162 	depends on HAVE_DMA_CONTIGUOUS && CMA168 	  You can disable CMA by specifying "cma=0" on the kernel's command
 180 	  Enable this option to get numa CMA areas so that NUMA devices
 183 	  You can set the size of pernuma CMA by specifying "cma_pernuma=size"
 184 	  or set the node id and its size of CMA by specifying "numa_cma=
 196 	  Memory Allocator.  If the size of 0 is selected, CMA is disabled by
 197 	  default, but it can be enabled by passing cma=size[MG] to the kernel.
 208 	  If 0 percent is selected, CMA is disabled by default, but it can be
 209 	  enabled by passing cma=size[MG] to the kernel.
 
 | 
| H A D | pool.c | 6 #include <linux/cma.h>60 	struct cma *cma;  in cma_in_zone()  local
 62 	cma = dev_get_cma_area(NULL);  in cma_in_zone()
 63 	if (!cma)  in cma_in_zone()
 66 	size = cma_get_size(cma);  in cma_in_zone()
 70 	/* CMA can't cross zone boundaries, see cma_activate_area() */  in cma_in_zone()
 71 	end = cma_get_base(cma) + size - 1;  in cma_in_zone()
 
 | 
| /linux/Documentation/driver-api/cxl/allocation/ | 
| H A D | hugepages.rst | 9 CXL Memory onlined as SystemRAM during early boot is eligible for use by CMA,10 as the NUMA node hosting that capacity will be `Online` at the time CMA
 14 capacity allocated by CMA - as the NUMA node hosting the capacity is `Offline`
 15 at :code:`__init` time - when CMA carves out contiguous capacity.
 
 | 
| /linux/kernel/ | 
| H A D | crash_reserve.c | 17 #include <linux/cma.h>182 	[SUFFIX_CMA]  = ",cma",
 189  *	crashkernel=size,[high|low|cma]
 342 	 * optional CMA reservation  in parse_crashkernel()
 488 		struct cma *res;  in reserve_crashkernel_cma()
 509 		pr_warn("crashkernel CMA reservation failed: %lld MB requested, %lld MB reserved in %d ranges\n",  in reserve_crashkernel_cma()
 512 		pr_info("crashkernel CMA reserved: %lld MB in %d ranges\n",  in reserve_crashkernel_cma()
 520 		pr_warn("crashkernel CMA reservation not supported\n");  in reserve_crashkernel_cma()
 
 | 
| H A D | kexec_core.c | 561 		struct page *cma = image->segment_cma[i];  in kimage_free_cma()  local564 		if (!cma)  in kimage_free_cma()
 567 		arch_kexec_pre_free_pages(page_address(cma), nr_pages);  in kimage_free_cma()
 568 		dma_release_from_contiguous(NULL, cma, nr_pages);  in kimage_free_cma()
 612 	/* Free CMA allocations */  in kimage_free()
 743 	struct page *cma = image->segment_cma[idx];  in kimage_load_cma_segment()  local
 744 	char *ptr = page_address(cma);  in kimage_load_cma_segment()
 759 	/* Then copy from source buffer to the CMA one */  in kimage_load_cma_segment()
 
 | 
| /linux/arch/s390/mm/ | 
| H A D | init.c | 32 #include <linux/cma.h>215 /* Prevent memory blocks which contain cma regions from going offline */
 222 static int s390_cma_check_range(struct cma *cma, void *data)  in s390_cma_check_range()  argument
 228 	if (cma_intersects(cma, mem_data->start, mem_data->end))  in s390_cma_check_range()
 
 | 
| /linux/Documentation/driver-api/cxl/linux/ | 
| H A D | early-boot.rst | 124 The contiguous memory allocator (CMA) enables reservation of contiguous memory125 regions on NUMA nodes during early boot.  However, CMA cannot reserve memory
 133 This means if users intend to defer management of CXL memory to the driver, CMA
 135 SystemRAM in `ZONE_NORMAL` during early boot, CMA reservations per-node can be
 
 | 
| /linux/Documentation/core-api/kho/ | 
| H A D | concepts.rst | 46 The scratch regions are declared as CMA when page allocator is initialized so47 that their memory can be used during system lifetime. CMA gives us the
 49 must be at a static physical memory location and CMA enforces that only
 
 | 
| /linux/arch/arm64/boot/dts/cix/ | 
| H A D | sky1-orion-o6.dts | 27 		linux,cma {31 			linux,cma-default;
 
 | 
| /linux/arch/xtensa/boot/dts/ | 
| H A D | kc705.dts | 22 		linux,cma {28 			linux,cma-default;
 
 | 
| /linux/include/linux/ | 
| H A D | dma-map-ops.h | 13 struct cma;100 extern struct cma *dma_contiguous_default_area;
 102 static inline struct cma *dev_get_cma_area(struct device *dev)  in dev_get_cma_area()
 111 		phys_addr_t limit, struct cma **res_cma, bool fixed);
 122 static inline struct cma *dev_get_cma_area(struct device *dev)  in dev_get_cma_area()
 130 		phys_addr_t base, phys_addr_t limit, struct cma **res_cma,  in dma_contiguous_reserve_area()
 
 | 
| H A D | kexec.h | 181  * @cma:	CMA page if the buffer is backed by CMA.194 	struct page *cma;  member
 
 | 
| /linux/arch/loongarch/boot/dts/ | 
| H A D | loongson-2k0500-ref.dts | 35 		linux,cma {39 			linux,cma-default;
 
 | 
| H A D | loongson-2k2000-ref.dts | 33 		linux,cma {37 			linux,cma-default;
 
 | 
| H A D | loongson-2k1000-ref.dts | 35 		linux,cma {39 			linux,cma-default;
 
 | 
| /linux/Documentation/devicetree/bindings/media/ | 
| H A D | nuvoton,npcm-vcd.yaml | 46       CMA pool to use for buffers allocation instead of the default CMA pool.
 | 
| H A D | allwinner,sun4i-a10-video-engine.yaml | 63       CMA pool to use for buffers allocation instead of the default64       CMA pool.
 
 | 
| /linux/arch/powerpc/kernel/ | 
| H A D | fadump.c | 25 #include <linux/cma.h>67 static struct cma *fadump_cma;
 70  * fadump_cma_init() - Initialize CMA area from a fadump reserved memory
 72  * This function initializes CMA area from fadump reserved memory.
 75  * Initialize only the area equivalent to boot memory size for CMA use.
 77  * to CMA and pages for those will stay reserved. boot memory size is
 78  * aligned per CMA requirement to satisy cma_init_reserved_mem() call.
 91 	 * Do not use CMA if user has provided fadump=nocma kernel parameter.  in fadump_cma_init()
 100 	 * Here we give the aligned chunk of this reserved memory to CMA.  in fadump_cma_init()
 111 		pr_warn("%s: Too less memory to give to CMA\n", __func__);  in fadump_cma_init()
 [all …]
 
 | 
| /linux/arch/arm/boot/dts/nxp/imx/ | 
| H A D | imx6ul-ccimx6ulsom.dtsi | 20 		linux,cma {24 			linux,cma-default;
 
 | 
| /linux/arch/arm64/boot/dts/freescale/ | 
| H A D | tqma8xx.dtsi | 37 		linux,cma {42 			linux,cma-default;
 
 |