Re: Correlation CMA size and FORCE_MAX_ZONEORDER
From: Michael Nazzareno Trimarchi
Date: Mon Sep 19 2022 - 05:18:12 EST
Hi David
On Mon, Sep 19, 2022 at 10:38 AM David Hildenbrand <david@xxxxxxxxxx> wrote:
>
> 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?
>
I can run 6-rc2 on my board. I test again but according to it, if I
put 4M as CMA in cma=4M in boot
parameters, the result is 32Mb of CMA. Apart of that seems that
process lime tiny membench can not even start
to mblock memory
Michael
> --
> Thanks,
>
> David / dhildenb
>
--
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
michael@xxxxxxxxxxxxxxxxxxxx
__________________________________
Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
info@xxxxxxxxxxxxxxxxxxxx
www.amarulasolutions.com