On 02/12/2018 04:24 PM, David Rientjes wrote:
> Both kernelcore= and movablecore= can be used to define the amount of
> ZONE_NORMAL and ZONE_MOVABLE on a system, respectively.  This requires
> the system memory capacity to be known when specifying the command line,
> however.
> 
> This introduces the ability to define both kernelcore= and movablecore=
> as a percentage of total system memory.  This is convenient for systems
> software that wants to define the amount of ZONE_MOVABLE, for example, as
> a proportion of a system's memory rather than a hardcoded byte value.
> 
> To define the percentage, the final character of the parameter should be
> a '%'.
> 
> Signed-off-by: David Rientjes <rient...@google.com>
> ---
>  Documentation/admin-guide/kernel-parameters.txt | 44 
> ++++++++++++-------------
>  mm/page_alloc.c                                 | 43 +++++++++++++++++++-----
>  2 files changed, 57 insertions(+), 30 deletions(-)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt 
> b/Documentation/admin-guide/kernel-parameters.txt
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -1825,30 +1825,30 @@
>       keepinitrd      [HW,ARM]
>  
>       kernelcore=     [KNL,X86,IA-64,PPC]
> -                     Format: nn[KMGTPE] | "mirror"
> -                     This parameter
> -                     specifies the amount of memory usable by the kernel
> -                     for non-movable allocations.  The requested amount is
> -                     spread evenly throughout all nodes in the system. The
> -                     remaining memory in each node is used for Movable
> -                     pages. In the event, a node is too small to have both
> -                     kernelcore and Movable pages, kernelcore pages will
> -                     take priority and other nodes will have a larger number
> -                     of Movable pages.  The Movable zone is used for the
> -                     allocation of pages that may be reclaimed or moved
> -                     by the page migration subsystem.  This means that
> -                     HugeTLB pages may not be allocated from this zone.
> -                     Note that allocations like PTEs-from-HighMem still
> -                     use the HighMem zone if it exists, and the Normal
> -                     zone if it does not.
> -
> -                     Instead of specifying the amount of memory (nn[KMGTPE]),
> -                     you can specify "mirror" option. In case "mirror"
> +                     Format: nn[KMGTPE] | nn% | "mirror"
> +                     This parameter specifies the amount of memory usable by
> +                     the kernel for non-movable allocations.  The requested
> +                     amount is spread evenly throughout all nodes in the
> +                     system as ZONE_NORMAL.  The remaining memory is used for
> +                     movable memory in its own zone, ZONE_MOVABLE.  In the
> +                     event, a node is too small to have both ZONE_NORMAL and
> +                     ZONE_MOVABLE, kernelcore memory will take priority and
> +                     other nodes will have a larger ZONE_MOVABLE.
> +
> +                     ZONE_MOVABLE is used for the allocation of pages that
> +                     may be reclaimed or moved by the page migration
> +                     subsystem.  This means that HugeTLB pages may not be
> +                     allocated from this zone.  Note that allocations like
> +                     PTEs-from-HighMem still use the HighMem zone if it
> +                     exists, and the Normal zone if it does not.

I know you are just updating the documentation for the new ability to
specify a percentage.  However, while looking at this I noticed that
the existing description is out of date.  HugeTLB pages CAN be treated
as movable and allocated from ZONE_MOVABLE.

If you have to respin, could you drop that line while making this change?

> +
> +                     It is possible to specify the exact amount of memory in
> +                     the form of "nn[KMGTPE]", a percentage of total system
> +                     memory in the form of "nn%", or "mirror".  If "mirror"
>                       option is specified, mirrored (reliable) memory is used
>                       for non-movable allocations and remaining memory is used
> -                     for Movable pages. nn[KMGTPE] and "mirror" are 
> exclusive,
> -                     so you can NOT specify nn[KMGTPE] and "mirror" at the 
> same
> -                     time.
> +                     for Movable pages.  "nn[KMGTPE]", "nn%", and "mirror"
> +                     are exclusive, so you cannot specify multiple forms.
>  
>       kgdbdbgp=       [KGDB,HW] kgdb over EHCI usb debug port.
>                       Format: <Controller#>[,poll interval]

Don't you need to make the same type percentage changes for 'movablecore='?

-- 
Mike Kravetz

Reply via email to