On 07/05/2018 04:07 AM, Alexandre Ghiti wrote: > arm, ia64, sh, x86 architectures use the same version > of huge_ptep_set_access_flags, 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 | 7 ------- > arch/arm64/include/asm/hugetlb.h | 1 + > arch/ia64/include/asm/hugetlb.h | 7 ------- > 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 | 7 ------- > arch/sparc/include/asm/hugetlb.h | 1 + > arch/x86/include/asm/hugetlb.h | 7 ------- > include/asm-generic/hugetlb.h | 9 +++++++++ > 10 files changed, 14 insertions(+), 28 deletions(-) > > diff --git a/arch/arm/include/asm/hugetlb-3level.h b/arch/arm/include/asm/hugetlb-3level.h > index 8247cd6a2ac6..54e4b097b1f5 100644 > --- a/arch/arm/include/asm/hugetlb-3level.h > +++ b/arch/arm/include/asm/hugetlb-3level.h > @@ -37,11 +37,4 @@ static inline pte_t huge_ptep_get(pte_t *ptep) > return retval; > } > > -static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > - unsigned long addr, pte_t *ptep, > - pte_t pte, int dirty) > -{ > - return ptep_set_access_flags(vma, addr, ptep, pte, dirty); > -} > - > #endif /* _ASM_ARM_HUGETLB_3LEVEL_H */ > diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h > index f4f69ae5466e..80887abcef7f 100644 > --- a/arch/arm64/include/asm/hugetlb.h > +++ b/arch/arm64/include/asm/hugetlb.h > @@ -42,6 +42,7 @@ extern pte_t arch_make_huge_pte(pte_t entry, struct vm_area_struct *vma, > #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT > extern void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, > pte_t *ptep, pte_t pte); > +#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > extern int huge_ptep_set_access_flags(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep, > pte_t pte, int dirty); > diff --git a/arch/ia64/include/asm/hugetlb.h b/arch/ia64/include/asm/hugetlb.h > index 49d1f7949f3a..e9b42750fdf5 100644 > --- a/arch/ia64/include/asm/hugetlb.h > +++ b/arch/ia64/include/asm/hugetlb.h > @@ -27,13 +27,6 @@ static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > { > } > > -static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > - unsigned long addr, pte_t *ptep, > - pte_t pte, int dirty) > -{ > - return ptep_set_access_flags(vma, addr, ptep, pte, dirty); > -} > - > static inline pte_t huge_ptep_get(pte_t *ptep) > { > return *ptep; > diff --git a/arch/mips/include/asm/hugetlb.h b/arch/mips/include/asm/hugetlb.h > index 3dcf5debf8c4..120adc3b2ffd 100644 > --- a/arch/mips/include/asm/hugetlb.h > +++ b/arch/mips/include/asm/hugetlb.h > @@ -63,6 +63,7 @@ static inline int huge_pte_none(pte_t pte) > return !val || (val == (unsigned long)invalid_pte_table); > } > > +#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > unsigned long addr, > pte_t *ptep, pte_t pte, > diff --git a/arch/parisc/include/asm/hugetlb.h b/arch/parisc/include/asm/hugetlb.h > index 9c3950ca2974..165b4e5a6f32 100644 > --- a/arch/parisc/include/asm/hugetlb.h > +++ b/arch/parisc/include/asm/hugetlb.h > @@ -43,6 +43,7 @@ static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > void huge_ptep_set_wrprotect(struct mm_struct *mm, > unsigned long addr, pte_t *ptep); > > +#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > int huge_ptep_set_access_flags(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep, > pte_t pte, int dirty); > diff --git a/arch/powerpc/include/asm/hugetlb.h b/arch/powerpc/include/asm/hugetlb.h > index 69c14ecac133..658bf7136a3c 100644 > --- a/arch/powerpc/include/asm/hugetlb.h > +++ b/arch/powerpc/include/asm/hugetlb.h > @@ -137,6 +137,7 @@ static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > flush_hugetlb_page(vma, addr); > } > > +#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > extern int huge_ptep_set_access_flags(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep, > pte_t pte, int dirty); > diff --git a/arch/sh/include/asm/hugetlb.h b/arch/sh/include/asm/hugetlb.h > index 8df4004977b9..c87195ae0cfa 100644 > --- a/arch/sh/include/asm/hugetlb.h > +++ b/arch/sh/include/asm/hugetlb.h > @@ -32,13 +32,6 @@ static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, > { > } > > -static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > - unsigned long addr, pte_t *ptep, > - pte_t pte, int dirty) > -{ > - return ptep_set_access_flags(vma, addr, ptep, pte, dirty); > -} > - > static inline pte_t huge_ptep_get(pte_t *ptep) > { > return *ptep; > diff --git a/arch/sparc/include/asm/hugetlb.h b/arch/sparc/include/asm/hugetlb.h > index c41754a113f3..028a1465fbe7 100644 > --- a/arch/sparc/include/asm/hugetlb.h > +++ b/arch/sparc/include/asm/hugetlb.h > @@ -40,6 +40,7 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, > set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); > } > > +#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep, > pte_t pte, int dirty) > diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h > index de370836a17d..1df8944904c6 100644 > --- a/arch/x86/include/asm/hugetlb.h > +++ b/arch/x86/include/asm/hugetlb.h > @@ -12,13 +12,6 @@ static inline int is_hugepage_only_range(struct mm_struct *mm, > return 0; > } > > -static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > - unsigned long addr, pte_t *ptep, > - pte_t pte, int dirty) > -{ > - return ptep_set_access_flags(vma, addr, ptep, pte, dirty); > -} > - > static inline pte_t huge_ptep_get(pte_t *ptep) > { > return *ptep; > diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h > index 9b9039845278..f3c99a03ee83 100644 > --- a/include/asm-generic/hugetlb.h > +++ b/include/asm-generic/hugetlb.h > @@ -110,4 +110,13 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, > } > #endif > > +#ifndef __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > +static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > + unsigned long addr, pte_t *ptep, > + pte_t pte, int dirty) > +{ > + return ptep_set_access_flags(vma, addr, ptep, pte, dirty); > +} > +#endif > + > #endif /* _ASM_GENERIC_HUGETLB_H */ >