• Muchun Song's avatar
    mm: hugetlb_vmemmap: improve hugetlb_vmemmap code readability · 6213834c
    Muchun Song authored
    There is a discussion about the name of hugetlb_vmemmap_alloc/free in
    thread [1].  The suggestion suggested by David is rename "alloc/free" to
    "optimize/restore" to make functionalities clearer to users, "optimize"
    means the function will optimize vmemmap pages, while "restore" means
    restoring its vmemmap pages discared before.  This commit does this.
    
    Another discussion is the confusion RESERVE_VMEMMAP_NR isn't used
    explicitly for vmemmap_addr but implicitly for vmemmap_end in
    hugetlb_vmemmap_alloc/free.  David suggested we can compute what
    hugetlb_vmemmap_init() does now at runtime.  We do not need to worry for
    the overhead of computing at runtime since the calculation is simple
    enough and those functions are not in a hot path.  This commit has the
    following improvements:
    
      1) The function suffixed name ("optimize/restore") is more expressive.
      2) The logic becomes less weird in hugetlb_vmemmap_optimize/restore().
      3) The hugetlb_vmemmap_init() does not need to be exported anymore.
      4) A ->optimize_vmemmap_pages field in struct hstate is killed.
      5) There is only one place where checks is_power_of_2(sizeof(struct
         page)) instead of two places.
      6) Add more comments for hugetlb_vmemmap_optimize/restore().
      7) For external users, hugetlb_optimize_vmemmap_pages() is used for
         detecting if the HugeTLB's vmemmap pages is optimizable originally.
         In this commit, it is killed and we introduce a new helper
         hugetlb_vmemmap_optimizable() to replace it.  The name is more
         expressive.
    
    Link: https://lore.kernel.org/all/20220404074652.68024-2-songmuchun@bytedance.com/ [1]
    Link: https://lkml.kernel.org/r/20220628092235.91270-7-songmuchun@bytedance.comSigned-off-by: default avatarMuchun Song <songmuchun@bytedance.com>
    Reviewed-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Will Deacon <will@kernel.org>
    Cc: Xiongchun Duan <duanxiongchun@bytedance.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    6213834c
hugetlb.c 200 KB