Commit c7ae7c0d authored by Liu Shixin's avatar Liu Shixin Committed by Zheng Zengkai
Browse files

mm/dynamic_hugetlb: disable dynamic hugetlb if hugetlb_vmemmap is enabled

hulk inclusion
category: feature
bugzilla: 46904, https://gitee.com/openeuler/kernel/issues/I4QSHG


CVE: NA

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

The dynamic_hugetlb feature need to split and merge pages frequently.
hugetlb_vmemmap will affects the perforemance of page split and merge.
If want to use dynamic hugetlb, please disable hugetlb_vmemmap.

Signed-off-by: default avatarLiu Shixin <liushixin2@huawei.com>
Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 72a95efd
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1081,6 +1081,17 @@ void __init dynamic_hugetlb_init(void)
	if (!enable_dhugetlb)
		return;

	/*
	 * The dynamic_hugetlb feature need to split and merge pages frequently.
	 * hugetlb_vmemmap will affects the perforemance of page split and merge.
	 * If want to use dynamic hugetlb, please disable hugetlb_vmemmap.
	 */
	if (hugetlb_free_vmemmap_enabled) {
		enable_dhugetlb = false;
		pr_info("Please set hugetlb_free_vmemmap=off if want to enable dynamic hugetlb\n");
		return;
	}

	count = max(hugepage_index(max_pfn), (unsigned long)DEFAULT_PAGELIST_COUNT);
	size = sizeof(struct dhugetlb_pagelist) + count * sizeof(struct dhugetlb_pool *);
	dhugetlb_pagelist_t = kzalloc(size, GFP_KERNEL);