• Qian Cai's avatar
    arm64: Track no early_pgtable_alloc() for kmemleak · c6975d7c
    Qian Cai authored
    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 fed84c78
    ("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: default avatarQian Cai <quic_qiancai@quicinc.com>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: default avatarMike Rapoport <rppt@linux.ibm.com>
    Link: https://lore.kernel.org/r/20211105150509.7826-1-quic_qiancai@quicinc.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    c6975d7c
memblock.c 60.1 KB