On 07/05/2018 04:07 AM, Alexandre Ghiti wrote: > arm, x86 architectures use the same version of > huge_ptep_clear_flush, so move this generic implementation into > asm-generic/hugetlb.h. > Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz > Signed-off-by: Alexandre Ghiti <alex@xxxxxxxx> > --- > arch/arm/include/asm/hugetlb-3level.h | 6 ------ > arch/arm64/include/asm/hugetlb.h | 1 + > arch/ia64/include/asm/hugetlb.h | 1 + > arch/mips/include/asm/hugetlb.h | 1 + > arch/parisc/include/asm/hugetlb.h | 1 + > arch/powerpc/include/asm/hugetlb.h | 1 + > arch/sh/include/asm/hugetlb.h | 1 + > arch/sparc/include/asm/hugetlb.h | 1 + > arch/x86/include/asm/hugetlb.h | 6 ------ > include/asm-generic/hugetlb.h | 8 ++++++++ > 10 files changed, 15 insertions(+), 12 deletions(-) > > diff --git a/arch/arm/include/asm/hugetlb-3level.h b/arch/arm/include/asm/hugetlb-3level.h > index ad36e84b819a..b897541520ef 100644 > --- a/arch/arm/include/asm/hugetlb-3level.h > +++ b/arch/arm/include/asm/hugetlb-3level.h > @@ -37,12 +37,6 @@ static inline pte_t huge_ptep_get(pte_t *ptep) > return retval; > } > > -static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > - unsigned long addr, pte_t *ptep) > -{ > - ptep_clear_flush(vma, addr, ptep); > -} > - > static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h > index 6ae0bcafe162..4c8dd488554d 100644 > --- a/arch/arm64/include/asm/hugetlb.h > +++ b/arch/arm64/include/asm/hugetlb.h > @@ -71,6 +71,7 @@ extern pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > unsigned long addr, pte_t *ptep); > extern void huge_ptep_set_wrprotect(struct mm_struct *mm, > unsigned long addr, pte_t *ptep); > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > extern void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep); > #define __HAVE_ARCH_HUGE_PTE_CLEAR > diff --git a/arch/ia64/include/asm/hugetlb.h b/arch/ia64/include/asm/hugetlb.h > index 6719c74da0de..41b5f6adeee4 100644 > --- a/arch/ia64/include/asm/hugetlb.h > +++ b/arch/ia64/include/asm/hugetlb.h > @@ -20,6 +20,7 @@ static inline int is_hugepage_only_range(struct mm_struct *mm, > REGION_NUMBER((addr)+(len)-1) == RGN_HPAGE); > } > > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/mips/include/asm/hugetlb.h b/arch/mips/include/asm/hugetlb.h > index 0959cc5a41fa..7df1f116a3cc 100644 > --- a/arch/mips/include/asm/hugetlb.h > +++ b/arch/mips/include/asm/hugetlb.h > @@ -48,6 +48,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > return pte; > } > > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/parisc/include/asm/hugetlb.h b/arch/parisc/include/asm/hugetlb.h > index 6e281e1bb336..9afff26747a1 100644 > --- a/arch/parisc/include/asm/hugetlb.h > +++ b/arch/parisc/include/asm/hugetlb.h > @@ -32,6 +32,7 @@ static inline int prepare_hugepage_range(struct file *file, > return 0; > } > > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/powerpc/include/asm/hugetlb.h b/arch/powerpc/include/asm/hugetlb.h > index 970101cf9c82..0b02856aa85b 100644 > --- a/arch/powerpc/include/asm/hugetlb.h > +++ b/arch/powerpc/include/asm/hugetlb.h > @@ -143,6 +143,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > #endif > } > > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/sh/include/asm/hugetlb.h b/arch/sh/include/asm/hugetlb.h > index 08ee6c00b5e9..9abf9c86b769 100644 > --- a/arch/sh/include/asm/hugetlb.h > +++ b/arch/sh/include/asm/hugetlb.h > @@ -25,6 +25,7 @@ static inline int prepare_hugepage_range(struct file *file, > return 0; > } > > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/sparc/include/asm/hugetlb.h b/arch/sparc/include/asm/hugetlb.h > index 944e3a4bfaff..651a9593fcee 100644 > --- a/arch/sparc/include/asm/hugetlb.h > +++ b/arch/sparc/include/asm/hugetlb.h > @@ -42,6 +42,7 @@ static inline int prepare_hugepage_range(struct file *file, > return 0; > } > > +#define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep) > { > diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h > index 48b8d9b13cc6..8347d5abf882 100644 > --- a/arch/x86/include/asm/hugetlb.h > +++ b/arch/x86/include/asm/hugetlb.h > @@ -27,12 +27,6 @@ static inline int prepare_hugepage_range(struct file *file, > return 0; > } > > -static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > - unsigned long addr, pte_t *ptep) > -{ > - ptep_clear_flush(vma, addr, ptep); > -} > - > static inline int huge_pte_none(pte_t pte) > { > return pte_none(pte); > diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h > index 0f6f151780dd..ffa63fd8388d 100644 > --- a/include/asm-generic/hugetlb.h > +++ b/include/asm-generic/hugetlb.h > @@ -65,4 +65,12 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > } > #endif > > +#ifndef __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH > +static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > + unsigned long addr, pte_t *ptep) > +{ > + ptep_clear_flush(vma, addr, ptep); > +} > +#endif > + > #endif /* _ASM_GENERIC_HUGETLB_H */ >