Re: [PATCH 05/19] arm64: get rid of superfluous __GFP_REPEAT

From: Will Deacon
Date: Mon Apr 11 2016 - 11:49:55 EST


On Mon, Apr 11, 2016 at 01:07:58PM +0200, Michal Hocko wrote:
> From: Michal Hocko <mhocko@xxxxxxxx>
>
> __GFP_REPEAT has a rather weak semantic but since it has been introduced
> around 2.6.12 it has been ignored for low order allocations.
>
> {pte,pmd,pud}_alloc_one{_kernel}, late_pgtable_alloc use PGALLOC_GFP for
> __get_free_page (aka order-0).
>
> pgd_alloc is slightly more complex because it allocates from pgd_cache
> if PGD_SIZE != PAGE_SIZE and PGD_SIZE depends on the configuration
> (CONFIG_ARM64_VA_BITS, PAGE_SHIFT and CONFIG_PGTABLE_LEVELS).
>
> As per
> config PGTABLE_LEVELS
> int
> default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36
> default 2 if ARM64_64K_PAGES && ARM64_VA_BITS_42
> default 3 if ARM64_64K_PAGES && ARM64_VA_BITS_48
> default 3 if ARM64_4K_PAGES && ARM64_VA_BITS_39
> default 3 if ARM64_16K_PAGES && ARM64_VA_BITS_47
> default 4 if !ARM64_64K_PAGES && ARM64_VA_BITS_48
>
> we should have the following options
>
> CONFIG_ARM64_VA_BITS:48 CONFIG_PGTABLE_LEVELS:4 PAGE_SIZE:4k size:4096 pages:1
> CONFIG_ARM64_VA_BITS:48 CONFIG_PGTABLE_LEVELS:4 PAGE_SIZE:16k size:16 pages:1
> CONFIG_ARM64_VA_BITS:48 CONFIG_PGTABLE_LEVELS:3 PAGE_SIZE:64k size:512 pages:1
> CONFIG_ARM64_VA_BITS:47 CONFIG_PGTABLE_LEVELS:3 PAGE_SIZE:16k size:16384 pages:1
> CONFIG_ARM64_VA_BITS:42 CONFIG_PGTABLE_LEVELS:2 PAGE_SIZE:64k size:65536 pages:1
> CONFIG_ARM64_VA_BITS:39 CONFIG_PGTABLE_LEVELS:3 PAGE_SIZE:4k size:4096 pages:1
> CONFIG_ARM64_VA_BITS:36 CONFIG_PGTABLE_LEVELS:2 PAGE_SIZE:16k size:16384 pages:1
>
> All of them fit into a single page (aka order-0). This means that this
> flag has never been actually useful here because it has always been used
> only for PAGE_ALLOC_COSTLY requests.

This all looks fine to me:

Acked-by: Will Deacon <will.deacon@xxxxxxx>

Will