From: Mike Rapoport <rppt@xxxxxxxxxxxxx> The definitions of shift, mask and size for the second and the third level of the leaf pages are available only when CONFIG_TRANSPARENT_HUGEPAGE is set. Otherwise they evaluate to BUILD_BUG(). There is no explanation neither in the code nor in the changelog why the usage of, e.g. HPAGE_PMD_SIZE should be only allowed with THP and forbidden otherwise while the definitions of HPAGE_PMD_SIZE and HPAGE_PUD_SIZE express the sizes better than ambiguous HPAGE_SIZE. Make HPAGE_PxD_{SHIFT,MASK,SIZE} definitions available unconditionally. Signed-off-by: Mike Rapoport <rppt@xxxxxxxxxxxxx> --- include/linux/huge_mm.h | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 71f20776b06c..1f4b44a76e31 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -115,7 +115,6 @@ extern struct kobj_attribute shmem_enabled_attr; #define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT) #define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER) -#ifdef CONFIG_TRANSPARENT_HUGEPAGE #define HPAGE_PMD_SHIFT PMD_SHIFT #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT) #define HPAGE_PMD_MASK (~(HPAGE_PMD_SIZE - 1)) @@ -124,6 +123,8 @@ extern struct kobj_attribute shmem_enabled_attr; #define HPAGE_PUD_SIZE ((1UL) << HPAGE_PUD_SHIFT) #define HPAGE_PUD_MASK (~(HPAGE_PUD_SIZE - 1)) +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + extern unsigned long transparent_hugepage_flags; /* @@ -316,13 +317,6 @@ static inline struct list_head *page_deferred_list(struct page *page) } #else /* CONFIG_TRANSPARENT_HUGEPAGE */ -#define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; }) -#define HPAGE_PMD_MASK ({ BUILD_BUG(); 0; }) -#define HPAGE_PMD_SIZE ({ BUILD_BUG(); 0; }) - -#define HPAGE_PUD_SHIFT ({ BUILD_BUG(); 0; }) -#define HPAGE_PUD_MASK ({ BUILD_BUG(); 0; }) -#define HPAGE_PUD_SIZE ({ BUILD_BUG(); 0; }) static inline int hpage_nr_pages(struct page *page) { -- 2.26.2