hugetlb_vmemmap.h (1181B)
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Optimize vmemmap pages associated with HugeTLB 4 * 5 * Copyright (c) 2020, Bytedance. All rights reserved. 6 * 7 * Author: Muchun Song <songmuchun@bytedance.com> 8 */ 9#ifndef _LINUX_HUGETLB_VMEMMAP_H 10#define _LINUX_HUGETLB_VMEMMAP_H 11#include <linux/hugetlb.h> 12 13#ifdef CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP 14int hugetlb_vmemmap_alloc(struct hstate *h, struct page *head); 15void hugetlb_vmemmap_free(struct hstate *h, struct page *head); 16void hugetlb_vmemmap_init(struct hstate *h); 17 18/* 19 * How many vmemmap pages associated with a HugeTLB page that can be 20 * optimized and freed to the buddy allocator. 21 */ 22static inline unsigned int hugetlb_optimize_vmemmap_pages(struct hstate *h) 23{ 24 return h->optimize_vmemmap_pages; 25} 26#else 27static inline int hugetlb_vmemmap_alloc(struct hstate *h, struct page *head) 28{ 29 return 0; 30} 31 32static inline void hugetlb_vmemmap_free(struct hstate *h, struct page *head) 33{ 34} 35 36static inline void hugetlb_vmemmap_init(struct hstate *h) 37{ 38} 39 40static inline unsigned int hugetlb_optimize_vmemmap_pages(struct hstate *h) 41{ 42 return 0; 43} 44#endif /* CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP */ 45#endif /* _LINUX_HUGETLB_VMEMMAP_H */