| /linux/mm/ |
| H A D | cma.c | 15 #define pr_fmt(fmt) "cma: " fmt 28 #include <linux/cma.h> 32 #include <trace/events/cma.h> 35 #include "cma.h" 37 struct cma cma_areas[MAX_CMA_AREAS]; 40 phys_addr_t cma_get_base(const struct cma *cma) in cma_get_base() 42 WARN_ON_ONCE(cma->nranges != 1); in cma_get_base() 43 return PFN_PHYS(cma->ranges[0].base_pfn); in cma_get_base() 46 unsigned long cma_get_size(const struct cma *cm in cma_get_size() 39 cma_get_base(const struct cma * cma) cma_get_base() argument 45 cma_get_size(const struct cma * cma) cma_get_size() argument 50 cma_get_name(const struct cma * cma) cma_get_name() argument 55 cma_bitmap_aligned_mask(const struct cma * cma,unsigned int align_order) cma_bitmap_aligned_mask() argument 67 cma_bitmap_aligned_offset(const struct cma * cma,const struct cma_memrange * cmr,unsigned int align_order) cma_bitmap_aligned_offset() argument 75 cma_bitmap_pages_to_bits(const struct cma * cma,unsigned long pages) cma_bitmap_pages_to_bits() argument 81 cma_clear_bitmap(struct cma * cma,const struct cma_memrange * cmr,unsigned long pfn,unsigned long count) cma_clear_bitmap() argument 101 cma_validate_zones(struct cma * cma) cma_validate_zones() argument 139 cma_activate_area(struct cma * cma) cma_activate_area() argument 212 cma_reserve_pages_on_error(struct cma * cma) cma_reserve_pages_on_error() argument 221 struct cma *cma; cma_new_area() local 248 cma_drop_area(struct cma * cma) cma_drop_area() argument 271 struct cma *cma; cma_init_reserved_mem() local 540 struct cma *cma; cma_declare_contiguous_multi() local 752 cma_debug_show_areas(struct cma * cma) cma_debug_show_areas() argument 779 cma_range_alloc(struct cma * cma,struct cma_memrange * cmr,unsigned long count,unsigned int align,struct page ** pagep,gfp_t gfp) cma_range_alloc() argument 859 __cma_alloc(struct cma * cma,unsigned long count,unsigned int align,gfp_t gfp) __cma_alloc() argument 927 cma_alloc(struct cma * cma,unsigned long count,unsigned int align,bool no_warn) cma_alloc() argument 933 cma_alloc_folio(struct cma * cma,int order,gfp_t gfp) cma_alloc_folio() argument 945 cma_pages_valid(struct cma * cma,const struct page * pages,unsigned long count) cma_pages_valid() argument 985 cma_release(struct cma * cma,const struct page * pages,unsigned long count) cma_release() argument 1020 cma_free_folio(struct cma * cma,const struct folio * folio) cma_free_folio() argument 1028 cma_for_each_area(int (* it)(struct cma * cma,void * data),void * data) cma_for_each_area() argument 1042 cma_intersects(struct cma * cma,unsigned long start,unsigned long end) cma_intersects() argument 1085 cma_reserve_early(struct cma * cma,unsigned long size) cma_reserve_early() argument [all...] |
| H A D | cma_debug.c | 36 struct cma *cma = data; in cma_used_get() local 38 spin_lock_irq(&cma->lock); in cma_used_get() 39 *val = cma->count - cma->available_count; in cma_used_get() 40 spin_unlock_irq(&cma->lock); in cma_used_get() 48 struct cma *cma = data; in cma_maxchunk_get() local 55 spin_lock_irq(&cma->lock); in cma_maxchunk_get() 56 for (r = 0; r < cma->nranges; r++) { in cma_maxchunk_get() 57 cmr = &cma->ranges[r]; in cma_maxchunk_get() 58 bitmap_maxno = cma_bitmap_maxno(cma, cmr); in cma_maxchunk_get() 62 spin_unlock_irq(&cma->lock); in cma_maxchunk_get() [all …]
|
| H A D | cma_sysfs.c | 17 void cma_sysfs_account_success_pages(struct cma *cma, unsigned long nr_pages) in cma_sysfs_account_success_pages() argument 19 atomic64_add(nr_pages, &cma->nr_pages_succeeded); in cma_sysfs_account_success_pages() 22 void cma_sysfs_account_fail_pages(struct cma *cma, unsigned long nr_pages) in cma_sysfs_account_fail_pages() argument 24 atomic64_add(nr_pages, &cma->nr_pages_failed); in cma_sysfs_account_fail_pages() 27 void cma_sysfs_account_release_pages(struct cma *cma, unsigned long nr_pages) in cma_sysfs_account_release_pages() argument 29 atomic64_add(nr_pages, &cma->nr_pages_released); in cma_sysfs_account_release_pages() 32 static inline struct cma *cma_from_kobj(struct kobject *kobj) in cma_from_kobj() 34 return container_of(kobj, struct cma_kobject, kobj)->cma; in cma_from_kobj() 40 struct cma *cma = cma_from_kobj(kobj); in alloc_pages_success_show() local 43 atomic64_read(&cma->nr_pages_succeeded)); in alloc_pages_success_show() [all …]
|
| H A D | cma.h | 10 struct cma *cma; member 39 struct cma { struct 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); 86 void cma_sysfs_account_release_pages(struct cma *cma, unsigned long nr_pages); 88 static inline void cma_sysfs_account_success_pages(struct cma *cma, in cma_sysfs_account_success_pages() argument 90 static inline void cma_sysfs_account_fail_pages(struct cma *cma, in cma_sysfs_account_fail_pages() argument [all …]
|
| H A D | hugetlb_cma.c | 4 #include <linux/cma.h> 16 static struct cma *hugetlb_cma[MAX_NUMNODES] __ro_after_init; 62 struct cma *cma; in hugetlb_cma_alloc_bootmem() 66 cma = hugetlb_cma[*nid]; in hugetlb_cma_alloc_bootmem() 67 m = cma_reserve_early(cma, huge_page_size(h)); in hugetlb_cma_alloc_bootmem() 73 cma = hugetlb_cma[node]; in hugetlb_cma_alloc_bootmem() 74 if (!cma || node == *nid) in hugetlb_cma_alloc_bootmem() 76 m = cma_reserve_early(cma, huge_page_size(h)); in hugetlb_cma_alloc_bootmem() 86 m->cma in hugetlb_cma_alloc_bootmem() 58 struct cma *cma; hugetlb_cma_alloc_bootmem() local [all...] |
| H A D | internal.h | 1011 struct cma; 1014 bool cma_validate_zones(struct cma *cma); 1015 void *cma_reserve_early(struct cma *cma, unsigned long size); 1018 static inline bool cma_validate_zones(struct cma *cma) in cma_validate_zones() argument 1022 static inline void *cma_reserve_early(struct cma *cma, unsigned long size) in cma_reserve_early() argument
|
| /linux/kernel/dma/ |
| H A D | contiguous.c | 56 struct cma *dma_contiguous_default_area; 106 static struct cma *dma_contiguous_numa_area[MAX_NUMNODES]; 108 static struct cma *dma_contiguous_pernuma_area[MAX_NUMNODES]; 176 struct cma **cma; in dma_numa_cma_reserve() local 186 cma = &dma_contiguous_pernuma_area[nid]; in dma_numa_cma_reserve() 189 0, false, name, cma, nid); in dma_numa_cma_reserve() 197 cma = &dma_contiguous_numa_area[nid]; in dma_numa_cma_reserve() 200 name, cma, nid); in dma_numa_cma_reserve() 296 phys_addr_t limit, struct cma **res_cma, in dma_contiguous_reserve_area() 350 static struct page *cma_alloc_aligned(struct cma *cma, size_t size, gfp_t gfp) in cma_alloc_aligned() argument [all …]
|
| H A D | pool.c | 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() 71 end = cma_get_base(cma) + size - 1; in cma_in_zone()
|
| H A D | Kconfig | 162 You can disable CMA by specifying "cma=0" on the kernel's command 191 default, but it can be enabled by passing cma=size[MG] to the kernel. 203 enabled by passing cma=size[MG] to the kernel.
|
| /linux/drivers/dma-buf/heaps/ |
| H A D | cma_heap.c | 33 static struct cma *dma_areas[MAX_CMA_AREAS] __initdata; 36 int __init dma_heap_cma_register_heap(struct cma *cma) in dma_heap_cma_register_heap() argument 41 dma_areas[dma_areas_num++] = cma; in dma_heap_cma_register_heap() 48 struct cma *cma; member 278 cma_release(cma_heap->cma, buffer->cma_pages, buffer->pagecount); in cma_heap_dma_buf_release() 322 cma_pages = cma_alloc(cma_heap->cma, pagecount, align, false); in cma_heap_allocate() 378 cma_release(cma_heap->cma, cma_pages, pagecount); in cma_heap_allocate() 389 static int __init __add_cma_heap(struct cma *cma, const char *name) in __add_cma_heap() argument 397 cma_heap->cma = cma; in __add_cma_heap() 416 struct cma *default_cma = dev_get_cma_area(NULL); in add_cma_heaps() [all …]
|
| /linux/arch/xtensa/boot/dts/ |
| H A D | kc705.dts | 22 linux,cma { 28 linux,cma-default;
|
| /linux/kernel/ |
| H A D | kexec_core.c | 563 struct page *cma = image->segment_cma[i]; in kimage_free_cma() local 566 if (!cma) in kimage_free_cma() 569 arch_kexec_pre_free_pages(page_address(cma), nr_pages); in kimage_free_cma() 570 dma_release_from_contiguous(NULL, cma, nr_pages); in kimage_free_cma() 745 struct page *cma = image->segment_cma[idx]; in kimage_load_cma_segment() local 746 char *ptr = page_address(cma); in kimage_load_cma_segment() 963 struct page *cma; in kimage_map_segment() local 967 cma = image->segment_cma[idx]; in kimage_map_segment() 968 if (cma) in kimage_map_segment() 969 return page_address(cma); in kimage_map_segment()
|
| /linux/arch/arm64/boot/dts/cix/ |
| H A D | sky1-orion-o6.dts | 29 linux,cma { 33 linux,cma-default;
|
| /linux/arch/loongarch/boot/dts/ |
| H A D | loongson-2k2000-ref.dts | 33 linux,cma { 37 linux,cma-default;
|
| /linux/arch/arm64/boot/dts/ti/ |
| H A D | k3-am68-phycore-som.dtsi | 38 /* global cma region */ 39 linux,cma { 43 linux,cma-default;
|
| H A D | k3-am62x-sk-common.dtsi | 45 /* global cma region */ 46 linux,cma { 50 linux,cma-default;
|
| /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;
|
| H A D | imx91-phycore-som.dtsi | 27 linux,cma { 32 linux,cma-default;
|
| H A D | imx93-tqma9352.dtsi | 25 linux,cma { 30 linux,cma-default;
|
| H A D | imx8mq-tqma8mq.dtsi | 52 linux,cma { 59 linux,cma-default;
|
| /linux/include/linux/ |
| H A D | hugetlb.h | 660 HPAGEFLAG(Cma, cma) 689 struct cma; 695 struct cma *cma; member
|
| /linux/arch/arm/boot/dts/broadcom/ |
| H A D | bcm283x.dtsi | 38 cma: linux,cma { label 42 linux,cma-default;
|
| /linux/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_ttm.c | 299 drm->agp.cma = pci->agp.cma; in nouveau_ttm_init()
|
| /linux/include/trace/events/ |
| H A D | cma.h | 3 #define TRACE_SYSTEM cma
|