diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> | 2019-09-24 00:24:40 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2019-09-24 13:22:29 -0400 |
commit | a6f197f889ce0a5fd583674d9fa39259f5c8f72f (patch) | |
tree | e7bb41f06beb07c5a0c816c9d738b6a3e53be8c5 | |
parent | 5b26db95fee3f1ce0d096b2de0ac6f3716171093 (diff) |
powerpc/book3s64: Export has_transparent_hugepage() related functions.
In later patch, we want to use hash_transparent_hugepage() in a kernel module.
Export two related functions.
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Link: https://lore.kernel.org/r/20190924042440.27946-1-aneesh.kumar@linux.ibm.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | arch/powerpc/include/asm/book3s/64/radix.h | 8 | ||||
-rw-r--r-- | arch/powerpc/mm/book3s64/hash_pgtable.c | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/book3s64/radix_pgtable.c | 7 |
3 files changed, 9 insertions, 8 deletions
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h index e04a839cb5b9..65a6966f1de4 100644 --- a/arch/powerpc/include/asm/book3s/64/radix.h +++ b/arch/powerpc/include/asm/book3s/64/radix.h | |||
@@ -254,7 +254,13 @@ extern void radix__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, | |||
254 | extern pgtable_t radix__pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); | 254 | extern pgtable_t radix__pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); |
255 | extern pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm, | 255 | extern pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm, |
256 | unsigned long addr, pmd_t *pmdp); | 256 | unsigned long addr, pmd_t *pmdp); |
257 | extern int radix__has_transparent_hugepage(void); | 257 | static inline int radix__has_transparent_hugepage(void) |
258 | { | ||
259 | /* For radix 2M at PMD level means thp */ | ||
260 | if (mmu_psize_defs[MMU_PAGE_2M].shift == PMD_SHIFT) | ||
261 | return 1; | ||
262 | return 0; | ||
263 | } | ||
258 | #endif | 264 | #endif |
259 | 265 | ||
260 | extern int __meminit radix__vmemmap_create_mapping(unsigned long start, | 266 | extern int __meminit radix__vmemmap_create_mapping(unsigned long start, |
diff --git a/arch/powerpc/mm/book3s64/hash_pgtable.c b/arch/powerpc/mm/book3s64/hash_pgtable.c index d1f390ac9cdb..64733b9cb20a 100644 --- a/arch/powerpc/mm/book3s64/hash_pgtable.c +++ b/arch/powerpc/mm/book3s64/hash_pgtable.c | |||
@@ -406,6 +406,8 @@ int hash__has_transparent_hugepage(void) | |||
406 | 406 | ||
407 | return 1; | 407 | return 1; |
408 | } | 408 | } |
409 | EXPORT_SYMBOL_GPL(hash__has_transparent_hugepage); | ||
410 | |||
409 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | 411 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ |
410 | 412 | ||
411 | #ifdef CONFIG_STRICT_KERNEL_RWX | 413 | #ifdef CONFIG_STRICT_KERNEL_RWX |
diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c index b4ca9e95e678..dc7a38f0a45b 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c | |||
@@ -1057,13 +1057,6 @@ pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm, | |||
1057 | return old_pmd; | 1057 | return old_pmd; |
1058 | } | 1058 | } |
1059 | 1059 | ||
1060 | int radix__has_transparent_hugepage(void) | ||
1061 | { | ||
1062 | /* For radix 2M at PMD level means thp */ | ||
1063 | if (mmu_psize_defs[MMU_PAGE_2M].shift == PMD_SHIFT) | ||
1064 | return 1; | ||
1065 | return 0; | ||
1066 | } | ||
1067 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ | 1060 | #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ |
1068 | 1061 | ||
1069 | void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep, | 1062 | void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep, |