• Muchun Song's avatar
    mm: hugetlb: introduce a new config HUGETLB_PAGE_FREE_VMEMMAP · 6be24bed
    Muchun Song authored
    The option HUGETLB_PAGE_FREE_VMEMMAP allows for the freeing of some
    vmemmap pages associated with pre-allocated HugeTLB pages.  For example,
    on X86_64 6 vmemmap pages of size 4KB each can be saved for each 2MB
    HugeTLB page.  4094 vmemmap pages of size 4KB each can be saved for each
    1GB HugeTLB page.
    
    When a HugeTLB page is allocated or freed, the vmemmap array representing
    the range associated with the page will need to be remapped.  When a page
    is allocated, vmemmap pages are freed after remapping.  When a page is
    freed, previously discarded vmemmap pages must be allocated before
    remapping.
    
    The config option is introduced early so that supporting code can be
    written to depend on the option.  The initial version of the code only
    provides support for x86-64.
    
    If config HAVE_BOOTMEM_INFO_NODE is enabled, the freeing vmemmap page code
    denpend on it to free vmemmap pages.  Otherwise, just use
    free_reserved_page() to free vmemmmap pages.  The routine
    register_page_bootmem_info() is used to register bootmem info.  Therefore,
    make sure register_page_bootmem_info is enabled if
    HUGETLB_PAGE_FREE_VMEMMAP is defined.
    
    Link: https://lkml.kernel.org/r/20210510030027.56044-3-songmuchun@bytedance.comSigned-off-by: default avatarMuchun Song <songmuchun@bytedance.com>
    Reviewed-by: default avatarOscar Salvador <osalvador@suse.de>
    Acked-by: default avatarMike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
    Tested-by: default avatarChen Huang <chenhuang5@huawei.com>
    Tested-by: default avatarBodeddula Balasubramaniam <bodeddub@amazon.com>
    Reviewed-by: default avatarBalbir Singh <bsingharora@gmail.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Barry Song <song.bao.hua@hisilicon.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: HORIGUCHI NAOYA <naoya.horiguchi@nec.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joao Martins <joao.m.martins@oracle.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mina Almasry <almasrymina@google.com>
    Cc: Oliver Neukum <oneukum@suse.com>
    Cc: Paul E. McKenney <paulmck@kernel.org>
    Cc: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Xiongchun Duan <duanxiongchun@bytedance.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6be24bed
Kconfig 8.75 KB