aboutsummaryrefslogtreecommitdiffstats
path: root/mm/pgtable-generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/pgtable-generic.c')
-rw-r--r--mm/pgtable-generic.c11
1 files changed, 4 insertions, 7 deletions
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
95pmd_t pmdp_clear_flush(struct vm_area_struct *vma, unsigned long address, 96pmd_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
110pmd_t pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address, 110pmd_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