Home
last modified time | relevance | path

Searched full:cma (Results 1 – 25 of 143) sorted by relevance

123456

/Linux-v5.10/mm/
Dcma_debug.c3 * CMA DebugFS Interface
10 #include <linux/cma.h>
16 #include "cma.h"
36 struct cma *cma = data; in cma_used_get() local
39 mutex_lock(&cma->lock); in cma_used_get()
41 used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma)); in cma_used_get()
42 mutex_unlock(&cma->lock); in cma_used_get()
43 *val = (u64)used << cma->order_per_bit; in cma_used_get()
51 struct cma *cma = data; in cma_maxchunk_get() local
54 unsigned long bitmap_maxno = cma_bitmap_maxno(cma); in cma_maxchunk_get()
[all …]
Dcma.c15 #define pr_fmt(fmt) "cma: " fmt
31 #include <linux/cma.h>
35 #include <trace/events/cma.h>
37 #include "cma.h"
39 struct cma cma_areas[MAX_CMA_AREAS];
43 phys_addr_t cma_get_base(const struct cma *cma) in cma_get_base() argument
45 return PFN_PHYS(cma->base_pfn); in cma_get_base()
48 unsigned long cma_get_size(const struct cma *cma) in cma_get_size() argument
50 return cma->count << PAGE_SHIFT; in cma_get_size()
53 const char *cma_get_name(const struct cma *cma) in cma_get_name() argument
[all …]
Dcma.h7 struct cma { struct
21 extern struct cma cma_areas[MAX_CMA_AREAS]; argument
24 static inline unsigned long cma_bitmap_maxno(struct cma *cma) in cma_bitmap_maxno() argument
26 return cma->count >> cma->order_per_bit; in cma_bitmap_maxno()
DKconfig262 depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
278 def_bool (MEMORY_ISOLATION && COMPACTION) || CMA
486 config CMA config
494 CMA reserves a region of memory and allows only movable pages to
502 bool "CMA debug messages (DEVELOPMENT)"
503 depends on DEBUG_KERNEL && CMA
505 Turns on debug messages in CMA. This produces KERN_DEBUG
506 messages for every CMA call as well as various messages while
511 bool "CMA debugfs interface"
512 depends on CMA && DEBUG_FS
[all …]
/Linux-v5.10/include/linux/
Dcma.h10 * There is always at least global CMA area and a few optional
23 struct cma;
26 extern phys_addr_t cma_get_base(const struct cma *cma);
27 extern unsigned long cma_get_size(const struct cma *cma);
28 extern const char *cma_get_name(const struct cma *cma);
33 bool fixed, const char *name, struct cma **res_cma,
38 bool fixed, const char *name, struct cma **res_cma) in cma_declare_contiguous()
46 struct cma **res_cma);
47 extern struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align,
49 extern bool cma_release(struct cma *cma, const struct page *pages, unsigned int count);
[all …]
Ddma-map-ops.h12 struct cma;
101 extern struct cma *dma_contiguous_default_area;
103 static inline struct cma *dev_get_cma_area(struct device *dev) in dev_get_cma_area()
112 phys_addr_t limit, struct cma **res_cma, bool fixed);
123 static inline struct cma *dev_get_cma_area(struct device *dev) in dev_get_cma_area()
131 phys_addr_t base, phys_addr_t limit, struct cma **res_cma, in dma_contiguous_reserve_area()
/Linux-v5.10/Documentation/admin-guide/mm/
Dcma_debugfs.rst2 CMA Debugfs Interface
5 The CMA debugfs interface is useful to retrieve basic information out of the
6 different CMA areas and to test allocation/release in each of the areas.
8 Each CMA zone represents a directory under <debugfs>/cma/, indexed by the
9 kernel's CMA index. So the first CMA zone would be:
11 <debugfs>/cma/cma-0
16 - [RO] count: Amount of memory in the CMA area.
19 - [WO] alloc: Allocate N pages from that CMA area. For example::
21 echo 5 > <debugfs>/cma/cma-2/alloc
23 would try to allocate 5 pages from the cma-2 area.
[all …]
/Linux-v5.10/kernel/dma/
Dcontiguous.c11 * The Contiguous Memory Allocator (CMA) makes it possible to
32 * CMA tries to solve this issue by operating on memory regions
38 #define pr_fmt(fmt) "cma: " fmt
52 #include <linux/cma.h>
60 struct cma *dma_contiguous_default_area;
63 * Default global CMA area size can be defined in kernel's .config.
69 * Users, who want to set the size of global CMA area for their system
70 * should use cma= kernel parameter.
97 early_param("cma", early_cma);
101 static struct cma *dma_contiguous_pernuma_area[MAX_NUMNODES];
[all …]
DKconfig112 depends on HAVE_DMA_CONTIGUOUS && CMA
118 You can disable CMA by specifying "cma=0" on the kernel's command
130 Enable this option to get pernuma CMA areas so that devices like
133 You can set the size of pernuma CMA by specifying "cma_pernuma=size"
145 Memory Allocator. If the size of 0 is selected, CMA is disabled by
146 default, but it can be enabled by passing cma=size[MG] to the kernel.
157 If 0 percent is selected, CMA is disabled by default, but it can be
158 enabled by passing cma=size[MG] to the kernel.
Dpool.c6 #include <linux/cma.h>
63 struct cma *cma; in cma_in_zone() local
65 cma = dev_get_cma_area(NULL); in cma_in_zone()
66 if (!cma) in cma_in_zone()
69 size = cma_get_size(cma); in cma_in_zone()
73 /* CMA can't cross zone boundaries, see cma_activate_area() */ in cma_in_zone()
74 end = cma_get_base(cma) + size - 1; in cma_in_zone()
/Linux-v5.10/drivers/staging/android/ion/
Dion_cma_heap.c3 * ION Memory Allocator CMA heap exporter
13 #include <linux/cma.h>
21 struct cma *cma; member
26 /* ION CMA heap operations functions */
42 pages = cma_alloc(cma_heap->cma, nr_pages, align, false); in ion_cma_allocate()
79 cma_release(cma_heap->cma, pages, nr_pages); in ion_cma_allocate()
90 cma_release(cma_heap->cma, pages, nr_pages); in ion_cma_free()
104 static struct ion_heap *__ion_cma_heap_create(struct cma *cma) in __ion_cma_heap_create() argument
114 cma_heap->cma = cma; in __ion_cma_heap_create()
119 static int __ion_add_cma_heaps(struct cma *cma, void *data) in __ion_add_cma_heaps() argument
[all …]
DKconfig22 bool "Ion CMA heap support"
25 Choose this option to enable CMA heaps with Ion. This heap is backed
26 by the Contiguous Memory Allocator (CMA). If your system has these
/Linux-v5.10/drivers/dma-buf/heaps/
Dcma_heap.c3 * DMABUF CMA heap exporter
9 #include <linux/cma.h>
26 struct cma *cma; member
38 cma_release(cma_heap->cma, cma_pages, nr_pages); in cma_heap_free()
42 /* dmabuf heap CMA operations functions */
69 cma_pages = cma_alloc(cma_heap->cma, nr_pages, align, false); in cma_heap_allocate()
130 cma_release(cma_heap->cma, cma_pages, nr_pages); in cma_heap_allocate()
140 static int __add_cma_heap(struct cma *cma, void *data) in __add_cma_heap() argument
148 cma_heap->cma = cma; in __add_cma_heap()
150 exp_info.name = cma_get_name(cma); in __add_cma_heap()
[all …]
DKconfig9 bool "DMA-BUF CMA Heap"
12 Choose this option to enable dma-buf CMA heap. This heap is backed
13 by the Contiguous Memory Allocator (CMA). If your system has these
/Linux-v5.10/drivers/gpu/drm/
Ddrm_gem_cma_helper.c3 * drm gem CMA (contiguous memory allocator) helper functions
26 * DOC: cma helpers
31 * The DRM GEM/CMA helpers use this allocator as a means to provide buffer
37 * __drm_gem_cma_create - Create a GEM CMA object without allocating memory
41 * This function creates and initializes a GEM CMA object of the given size,
85 * This function creates a CMA GEM object and allocates a contiguous chunk of
130 * This function creates a CMA GEM object, allocating a physically contiguous
167 * drm_gem_cma_free_object - free resources associated with a CMA GEM object
170 * This function frees the backing memory of the CMA GEM object, cleans up the
173 * Drivers using the CMA helpers should set this as their
[all …]
Ddrm_fb_cma_helper.c3 * drm kms/fb cma (contiguous memory allocator) helper functions
21 * DOC: framebuffer cma helper functions
23 * Provides helper functions for creating a cma (contiguous memory allocator)
27 * callback function to create a cma backed framebuffer.
31 * drm_fb_cma_get_gem_obj() - Get CMA GEM object for framebuffer
35 * Return the CMA GEM object for given framebuffer.
59 * Return the CMA GEM address for given framebuffer.
/Linux-v5.10/include/drm/
Ddrm_gem_cma_helper.h12 * struct drm_gem_cma_object - GEM object backed by CMA memory allocations
25 /* For objects with DMA memory allocated by GEM CMA */
40 * DEFINE_DRM_GEM_CMA_FOPS() - macro to generate file operations for CMA drivers
43 * This macro autogenerates a suitable &struct file_operations for CMA based
113 * DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE - CMA GEM driver operations
134 * DRM_GEM_CMA_DRIVER_OPS - CMA GEM driver operations
149 * DRM_GEM_CMA_DRIVER_OPS_VMAP_WITH_DUMB_CREATE - CMA GEM driver operations
173 * DRM_GEM_CMA_DRIVER_OPS_VMAP - CMA GEM driver operations ensuring a virtual
/Linux-v5.10/arch/s390/mm/
Dinit.c31 #include <linux/cma.h>
232 /* Prevent memory blocks which contain cma regions from going offline */
239 static int s390_cma_check_range(struct cma *cma, void *data) in s390_cma_check_range() argument
245 start = cma_get_base(cma); in s390_cma_check_range()
246 end = start + cma_get_size(cma); in s390_cma_check_range()
/Linux-v5.10/Documentation/devicetree/bindings/reserved-memory/
Dreserved-memory.txt71 - If a "linux,cma-default" property is present, then Linux will use the
89 one default of all device drivers (named linux,cma@72000000 and 64MiB in size),
107 linux,cma {
112 linux,cma-default;
/Linux-v5.10/arch/xtensa/boot/dts/
Dkc705.dts22 linux,cma {
28 linux,cma-default;
/Linux-v5.10/lib/
Dshow_mem.c9 #include <linux/cma.h>
39 printk("%lu pages cma reserved\n", totalcma_pages); in show_mem()
/Linux-v5.10/Documentation/devicetree/bindings/media/
Dallwinner,sun4i-a10-video-engine.yaml55 CMA pool to use for buffers allocation instead of the default
56 CMA pool.
/Linux-v5.10/Documentation/powerpc/
Dfirmware-assisted-dump.rst147 Contiguous Memory Allocator (CMA) for memory reservation if CMA is
148 configured for kernel. With CMA reservation this memory will be
152 that were present in CMA region::
222 By default, FADump reserved memory will be initialized as CMA area.
224 prevent FADump to use CMA.
/Linux-v5.10/drivers/gpu/drm/vc4/
Dvc4_bo.c11 * use the GEM CMA helper functions to allocate contiguous ranges of
14 * Since the CMA allocator is very slow, we keep a cache of recently
382 * This lets the CMA helpers allocate object structs for us, and keep
428 * If we've run out of CMA memory, kill the cache of in vc4_bo_create()
429 * CMA allocations we've got laying around and try again. in vc4_bo_create()
437 * Still not enough CMA memory, purge the userspace BO in vc4_bo_create()
443 * after each to see if CMA allocation succeeds. Or even in vc4_bo_create()
453 DRM_ERROR("Failed to allocate from CMA:\n"); in vc4_bo_create()
550 /* If this object was partially constructed but CMA allocation in vc4_free_object()
/Linux-v5.10/arch/powerpc/kernel/
Dfadump.c25 #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 thoes 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()
105 pr_err("Failed to init cma area for firmware-assisted dump,%d\n", rc); in fadump_cma_init()
107 * Though the CMA init has failed we still have memory in fadump_cma_init()
[all …]

123456