Re: [PATCH v2] arm64: Track no early_pgtable_alloc() for kmemleak

From: Catalin Marinas
Date: Fri Nov 05 2021 - 14:39:01 EST


On Fri, Nov 05, 2021 at 11:05:09AM -0400, Qian Cai wrote:
> After switched page size from 64KB to 4KB on several arm64 servers here,
> kmemleak starts to run out of early memory pool due to a huge number of
> those early_pgtable_alloc() calls:
>
> kmemleak_alloc_phys()
> memblock_alloc_range_nid()
> memblock_phys_alloc_range()
> early_pgtable_alloc()
> init_pmd()
> alloc_init_pud()
> __create_pgd_mapping()
> __map_memblock()
> paging_init()
> setup_arch()
> start_kernel()
>
> Increased the default value of DEBUG_KMEMLEAK_MEM_POOL_SIZE by 4 times
> won't be enough for a server with 200GB+ memory. There isn't much
> interesting to check memory leaks for those early page tables and those
> early memory mappings should not reference to other memory. Hence, no
> kmemleak false positives, and we can safely skip tracking those early
> allocations from kmemleak like we did in the commit fed84c785270
> ("mm/memblock.c: skip kmemleak for kasan_init()") without needing to
> introduce complications to automatically scale the value depends on the
> runtime memory size etc. After the patch, the default value of
> DEBUG_KMEMLEAK_MEM_POOL_SIZE becomes sufficient again.
>
> Signed-off-by: Qian Cai <quic_qiancai@xxxxxxxxxxx>

Reviewed-by: Catalin Marinas <catalin.marinas@xxxxxxx>