Commit d8c37c480678ebe09bc570f33e085e28049db035
Committed by
Linus Torvalds
1 parent
8d32ff8440
Exists in
master
and in
20 other branches
thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE
These macros will be used in a later patch, where all usages are expected to be optimized away without #ifdef CONFIG_TRANSPARENT_HUGEPAGE. But to detect unexpected usages, we convert the existing BUG() to BUILD_BUG(). [akpm@linux-foundation.org: fix build in mm/pgtable-generic.c] Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Acked-by: Hillf Danton <dhillf@gmail.com> Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: David Rientjes <rientjes@google.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 2 changed files with 9 additions and 7 deletions Side-by-side Diff
include/linux/huge_mm.h
... | ... | @@ -51,6 +51,9 @@ |
51 | 51 | unsigned long address, |
52 | 52 | enum page_check_address_pmd_flag flag); |
53 | 53 | |
54 | +#define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT) | |
55 | +#define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER) | |
56 | + | |
54 | 57 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
55 | 58 | #define HPAGE_PMD_SHIFT HPAGE_SHIFT |
56 | 59 | #define HPAGE_PMD_MASK HPAGE_MASK |
... | ... | @@ -102,8 +105,6 @@ |
102 | 105 | BUG_ON(pmd_trans_splitting(*____pmd) || \ |
103 | 106 | pmd_trans_huge(*____pmd)); \ |
104 | 107 | } while (0) |
105 | -#define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT) | |
106 | -#define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER) | |
107 | 108 | #if HPAGE_PMD_ORDER > MAX_ORDER |
108 | 109 | #error "hugepages can't be allocated by the buddy allocator" |
109 | 110 | #endif |
... | ... | @@ -158,9 +159,9 @@ |
158 | 159 | return page; |
159 | 160 | } |
160 | 161 | #else /* CONFIG_TRANSPARENT_HUGEPAGE */ |
161 | -#define HPAGE_PMD_SHIFT ({ BUG(); 0; }) | |
162 | -#define HPAGE_PMD_MASK ({ BUG(); 0; }) | |
163 | -#define HPAGE_PMD_SIZE ({ BUG(); 0; }) | |
162 | +#define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; }) | |
163 | +#define HPAGE_PMD_MASK ({ BUILD_BUG(); 0; }) | |
164 | +#define HPAGE_PMD_SIZE ({ BUILD_BUG(); 0; }) | |
164 | 165 | |
165 | 166 | #define hpage_nr_pages(x) 1 |
166 | 167 |
mm/pgtable-generic.c
... | ... | @@ -70,10 +70,11 @@ |
70 | 70 | unsigned long address, pmd_t *pmdp) |
71 | 71 | { |
72 | 72 | int young; |
73 | -#ifndef CONFIG_TRANSPARENT_HUGEPAGE | |
73 | +#ifdef CONFIG_TRANSPARENT_HUGEPAGE | |
74 | + VM_BUG_ON(address & ~HPAGE_PMD_MASK); | |
75 | +#else | |
74 | 76 | BUG(); |
75 | 77 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ |
76 | - VM_BUG_ON(address & ~HPAGE_PMD_MASK); | |
77 | 78 | young = pmdp_test_and_clear_young(vma, address, pmdp); |
78 | 79 | if (young) |
79 | 80 | flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE); |