On Mon, Jan 27, 2025 at 8:19 PM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Mon, 27 Jan 2025 23:21:42 +0000 Frank van der Linden <fvdl@xxxxxxxxxx> wrote: > > > Currently, CMA manages one range of physically contiguous memory. > > Creation of larger CMA areas with hugetlb_cma may run in to gaps > > in physical memory, so that they are not able to allocate that > > contiguous physical range from memblock when creating the CMA > > area. > > > > This one breaks my x86_64 allmodconfig build, which I find surprising. > Did I miss some dependency? > > mm/cma_debug.c: In function 'cma_maxchunk_get': > mm/cma_debug.c:51:38: error: too few arguments to function 'cma_bitmap_maxno' > 51 | unsigned long bitmap_maxno = cma_bitmap_maxno(cma); > | ^~~~~~~~~~~~~~~~ > In file included from mm/cma_debug.c:16: > mm/cma.h:56:29: note: declared here > 56 | static inline unsigned long cma_bitmap_maxno(struct cma *cma, > | ^~~~~~~~~~~~~~~~ > mm/cma_debug.c:55:49: error: 'struct cma' has no member named 'bitmap'; did you mean 'dfs_bitmap'? > 55 | start = find_next_zero_bit(cma->bitmap, bitmap_maxno, end); > | ^~~~~~ > | dfs_bitmap > mm/cma_debug.c:58:42: error: 'struct cma' has no member named 'bitmap'; did you mean 'dfs_bitmap'? > 58 | end = find_next_bit(cma->bitmap, bitmap_maxno, start); > | ^~~~~~ > | dfs_bitmap > In file included from mm/cma_debug.c:9: > mm/cma_debug.c: In function 'cma_debugfs_add_one': > mm/cma_debug.c:169:33: error: 'struct cma' has no member named 'base_pfn' > 169 | &cma->base_pfn, &cma_debugfs_fops); > | ^~ > ./include/linux/debugfs.h:129:38: note: in definition of macro 'debugfs_create_file' > 129 | (name, mode, parent, data, fops) > | ^~~~ > mm/cma_debug.c:176:45: error: 'struct cma' has no member named 'bitmap'; did you mean 'dfs_bitmap'? > 176 | cma->dfs_bitmap.array = (u32 *)cma->bitmap; > | ^~~~~~ > | dfs_bitmap > In file included from ./include/vdso/const.h:5, > from ./include/linux/const.h:4, > from ./include/linux/list.h:9, > from ./include/linux/wait.h:7, > from ./include/linux/wait_bit.h:8, > from ./include/linux/fs.h:6, > from ./include/linux/debugfs.h:15: > mm/cma_debug.c:177:51: error: too few arguments to function 'cma_bitmap_maxno' > 177 | cma->dfs_bitmap.n_elements = DIV_ROUND_UP(cma_bitmap_maxno(cma), > | ^~~~~~~~~~~~~~~~ > ./include/uapi/linux/const.h:51:40: note: in definition of macro '__KERNEL_DIV_ROUND_UP' > 51 | #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) > | ^ > mm/cma_debug.c:177:38: note: in expansion of macro 'DIV_ROUND_UP' > 177 | cma->dfs_bitmap.n_elements = DIV_ROUND_UP(cma_bitmap_maxno(cma), > | ^~~~~~~~~~~~ > mm/cma.h:56:29: note: declared here > 56 | static inline unsigned long cma_bitmap_maxno(struct cma *cma, > | ^~~~~~~~~~~~~~~~ > No, you're quite right - somehow I dropped the CMA_DEBUGFS part of the range change before sending it, probably during rebasing it to the latest tree. I'll add it back in a v2, I should probably wait for other comments before sending that. - Frank