• Naoya Horiguchi's avatar
    mm/hugetlb: check gigantic_page_runtime_supported() in return_unused_surplus_pages() · c0531714
    Naoya Horiguchi authored
    Patch series "mm, hwpoison: enable 1GB hugepage support", v7.
    
    
    This patch (of 8):
    
    I found a weird state of 1GB hugepage pool, caused by the following
    procedure:
    
      - run a process reserving all free 1GB hugepages,
      - shrink free 1GB hugepage pool to zero (i.e. writing 0 to
        /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages), then
      - kill the reserving process.
    
    , then all the hugepages are free *and* surplus at the same time.
    
      $ cat /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
      3
      $ cat /sys/kernel/mm/hugepages/hugepages-1048576kB/free_hugepages
      3
      $ cat /sys/kernel/mm/hugepages/hugepages-1048576kB/resv_hugepages
      0
      $ cat /sys/kernel/mm/hugepages/hugepages-1048576kB/surplus_hugepages
      3
    
    This state is resolved by reserving and allocating the pages then freeing
    them again, so this seems not to result in serious problem.  But it's a
    little surprising (shrinking pool suddenly fails).
    
    This behavior is caused by hstate_is_gigantic() check in
    return_unused_surplus_pages().  This was introduced so long ago in 2008 by
    commit aa888a74 ("hugetlb: support larger than MAX_ORDER"), and at
    that time the gigantic pages were not supposed to be allocated/freed at
    run-time.  Now kernel can support runtime allocation/free, so let's check
    gigantic_page_runtime_supported() together.
    
    Link: https://lkml.kernel.org/r/20220714042420.1847125-1-naoya.horiguchi@linux.dev
    Link: https://lkml.kernel.org/r/20220714042420.1847125-2-naoya.horiguchi@linux.dev
    
    Signed-off-by: default avatarNaoya Horiguchi <naoya.horiguchi@nec.com>
    Reviewed-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Liu Shixin <liushixin2@huawei.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: kernel test robot <lkp@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    c0531714
hugetlb.c 200 KB