diff options
-rw-r--r-- | include/asm-generic/pgtable.h | 14 | ||||
-rw-r--r-- | mm/pgtable-generic.c | 11 |
2 files changed, 7 insertions, 18 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index f1eddf71dd0c..31b6188df221 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
@@ -87,14 +87,6 @@ static inline pmd_t pmdp_get_and_clear(struct mm_struct *mm, | |||
87 | pmd_clear(mm, address, pmdp); | 87 | pmd_clear(mm, address, pmdp); |
88 | return pmd; | 88 | return pmd; |
89 | }) | 89 | }) |
90 | #else /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
91 | static inline pmd_t pmdp_get_and_clear(struct mm_struct *mm, | ||
92 | unsigned long address, | ||
93 | pmd_t *pmdp) | ||
94 | { | ||
95 | BUG(); | ||
96 | return __pmd(0); | ||
97 | } | ||
98 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | 90 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ |
99 | #endif | 91 | #endif |
100 | 92 | ||
@@ -163,9 +155,9 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm, | |||
163 | #endif | 155 | #endif |
164 | 156 | ||
165 | #ifndef __HAVE_ARCH_PMDP_SPLITTING_FLUSH | 157 | #ifndef __HAVE_ARCH_PMDP_SPLITTING_FLUSH |
166 | extern pmd_t pmdp_clear_flush(struct vm_area_struct *vma, | 158 | extern pmd_t pmdp_splitting_flush(struct vm_area_struct *vma, |
167 | unsigned long address, | 159 | unsigned long address, |
168 | pmd_t *pmdp); | 160 | pmd_t *pmdp); |
169 | #endif | 161 | #endif |
170 | 162 | ||
171 | #ifndef __HAVE_ARCH_PTE_SAME | 163 | #ifndef __HAVE_ARCH_PTE_SAME |
diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c index d030548047e2..0369f5b3ba1b 100644 --- a/mm/pgtable-generic.c +++ b/mm/pgtable-generic.c | |||
@@ -92,32 +92,29 @@ pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address, | |||
92 | #endif | 92 | #endif |
93 | 93 | ||
94 | #ifndef __HAVE_ARCH_PMDP_CLEAR_FLUSH | 94 | #ifndef __HAVE_ARCH_PMDP_CLEAR_FLUSH |
95 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | ||
95 | pmd_t pmdp_clear_flush(struct vm_area_struct *vma, unsigned long address, | 96 | pmd_t pmdp_clear_flush(struct vm_area_struct *vma, unsigned long address, |
96 | pmd_t *pmdp) | 97 | pmd_t *pmdp) |
97 | { | 98 | { |
98 | pmd_t pmd; | 99 | pmd_t pmd; |
99 | #ifndef CONFIG_TRANSPARENT_HUGEPAGE | ||
100 | BUG(); | ||
101 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
102 | VM_BUG_ON(address & ~HPAGE_PMD_MASK); | 100 | VM_BUG_ON(address & ~HPAGE_PMD_MASK); |
103 | pmd = pmdp_get_and_clear(vma->vm_mm, address, pmdp); | 101 | pmd = pmdp_get_and_clear(vma->vm_mm, address, pmdp); |
104 | flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE); | 102 | flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE); |
105 | return pmd; | 103 | return pmd; |
106 | } | 104 | } |
105 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
107 | #endif | 106 | #endif |
108 | 107 | ||
109 | #ifndef __HAVE_ARCH_PMDP_SPLITTING_FLUSH | 108 | #ifndef __HAVE_ARCH_PMDP_SPLITTING_FLUSH |
109 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | ||
110 | pmd_t pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address, | 110 | pmd_t pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address, |
111 | pmd_t *pmdp) | 111 | pmd_t *pmdp) |
112 | { | 112 | { |
113 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | ||
114 | pmd_t pmd = pmd_mksplitting(*pmdp); | 113 | pmd_t pmd = pmd_mksplitting(*pmdp); |
115 | VM_BUG_ON(address & ~HPAGE_PMD_MASK); | 114 | VM_BUG_ON(address & ~HPAGE_PMD_MASK); |
116 | set_pmd_at(vma->vm_mm, address, pmdp, pmd); | 115 | set_pmd_at(vma->vm_mm, address, pmdp, pmd); |
117 | /* tlb flush only to serialize against gup-fast */ | 116 | /* tlb flush only to serialize against gup-fast */ |
118 | flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE); | 117 | flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE); |
119 | #else /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
120 | BUG(); | ||
121 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
122 | } | 118 | } |
119 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | ||
123 | #endif | 120 | #endif |