Re: [PATCH 02/27] mm, cma: support multiple contiguous ranges, if requested

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux