Commit b632f062 authored by Muchun Song's avatar Muchun Song Committed by Zheng Zengkai
Browse files

mm: hugetlb: introduce CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON

mainline inclusion
from mainline-v5.14
commit e6d41f12
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I3ZCW9
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e6d41f12df0efcaa6e30b575d40f2529024cfce9

-------------------------------------------------

When using HUGETLB_PAGE_FREE_VMEMMAP, the freeing unused vmemmap pages
associated with each HugeTLB page is default off.  Now the vmemmap is PMD
mapped.  So there is no side effect when this feature is enabled with no
HugeTLB pages in the system.  Someone may want to enable this feature in
the compiler time instead of using boot command line.  So add a config to
make it default on when someone do not want to enable it via command line.

Link: https://lkml.kernel.org/r/20210616094915.34432-4-songmuchun@bytedance.com


Signed-off-by: default avatarMuchun Song <songmuchun@bytedance.com>
Cc: Chen Huang <chenhuang5@huawei.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Oscar Salvador <osalvador@suse.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>

Conflicts:
	Documentation/admin-guide/kernel-parameters.txt
Signed-off-by: default avatarChen Huang <chenhuang5@huawei.com>
Signed-off-by: default avatarNanyong Sun <sunnanyong@huawei.com>
Reviewed-by: default avatarTong Tiangen <tongtiangen@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 0cf76862
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -241,6 +241,16 @@ config HUGETLB_PAGE_FREE_VMEMMAP
	depends on X86_64
	depends on SPARSEMEM_VMEMMAP

config HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON
	bool "Default freeing vmemmap pages of HugeTLB to on"
	default n
	depends on HUGETLB_PAGE_FREE_VMEMMAP
	help
	  When using HUGETLB_PAGE_FREE_VMEMMAP, the freeing unused vmemmap
	  pages associated with each HugeTLB page is default off. Say Y here
	  to enable freeing vmemmap pages of HugeTLB by default. It can then
	  be disabled on the command line via hugetlb_free_vmemmap=off.

config MEMFD_CREATE
	def_bool TMPFS || HUGETLBFS

+4 −2
Original line number Diff line number Diff line
@@ -182,7 +182,7 @@
#define RESERVE_VMEMMAP_NR		2U
#define RESERVE_VMEMMAP_SIZE		(RESERVE_VMEMMAP_NR << PAGE_SHIFT)

bool hugetlb_free_vmemmap_enabled;
bool hugetlb_free_vmemmap_enabled = IS_ENABLED(CONFIG_HUGETLB_PAGE_FREE_VMEMMAP_DEFAULT_ON);

static int __init early_hugetlb_free_vmemmap_param(char *buf)
{
@@ -197,7 +197,9 @@ static int __init early_hugetlb_free_vmemmap_param(char *buf)

	if (!strcmp(buf, "on"))
		hugetlb_free_vmemmap_enabled = true;
	else if (strcmp(buf, "off"))
	else if (!strcmp(buf, "off"))
		hugetlb_free_vmemmap_enabled = false;
	else
		return -EINVAL;

	return 0;