Messages in this thread | | | Date | Mon, 19 Sep 2022 10:38:47 +0200 | From | David Hildenbrand <> | Subject | Re: Correlation CMA size and FORCE_MAX_ZONEORDER |
| |
On 15.09.22 23:36, Michael Nazzareno Trimarchi wrote: > Hi all
Hi,
> > Working on a small device with 128MB of memory and using imx_v6_v7 > defconfig I found that CMA_SIZE_MBYTES, CMA_SIZE_PERCENTAGE > are not respected. The calculation done does not allow the requested > size. I think that this should be somehow documented and described but > I did not > find the documentation. Does it work this way? > > With CMA_SIZE of 8MB I need to have FORCE_MAX_ZONEORDER=12 if I have > the default FORCE_MAX_ZONEORDER=14 the min size is 32Mb
The underlying constraint is that CMA regions require a certain minimum alignment+size. They cannot be arbitrarily in size.
CMA_MIN_ALIGNMENT_BYTES expresses that, and corresponds in upstream kernels to the size of a single pageblock.
In previous kernels, it used to be the size of the largest buddy allocation granularity (derived from MAX_ORDER, derived from FORCE_MAX_ZONEORDER).
On upstream kernels, the FORCE_MAX_ZONEORDER constraint should no longer apply. On most archs, the minimum alignment+size should be 2 MiB (x86-64, aarch64 with 4k base pages) -- the size of a single pageblock.
So far the theory. Are you still running into this limitation on upstream kernels?
-- Thanks,
David / dhildenb
| |