diff options
author | Christophe Leroy <christophe.leroy@c-s.fr> | 2019-04-26 11:58:08 -0400 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2019-05-02 11:20:25 -0400 |
commit | dc096864ba784c2d3d10480d71f14a53f40f997c (patch) | |
tree | 62717a0cb94369ad9c1879f7e69e0a3cf64ba428 | |
parent | b0124ff57e9405725b4dfeffbdfa929bb973ad2c (diff) |
powerpc/mm: refactor pte_alloc_one() and pte_free() families definition.
Functions pte_alloc_one(), pte_alloc_one_kernel(), pte_free(),
pte_free_kernel() are identical for the four subarches.
This patch moves their definition in a common place.
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r-- | arch/powerpc/include/asm/book3s/32/pgalloc.h | 25 | ||||
-rw-r--r-- | arch/powerpc/include/asm/book3s/64/pgalloc.h | 22 | ||||
-rw-r--r-- | arch/powerpc/include/asm/nohash/32/pgalloc.h | 25 | ||||
-rw-r--r-- | arch/powerpc/include/asm/nohash/64/pgalloc.h | 25 | ||||
-rw-r--r-- | arch/powerpc/include/asm/pgalloc.h | 25 |
5 files changed, 25 insertions, 97 deletions
diff --git a/arch/powerpc/include/asm/book3s/32/pgalloc.h b/arch/powerpc/include/asm/book3s/32/pgalloc.h index 0ed856068bb8..46422309d6e0 100644 --- a/arch/powerpc/include/asm/book3s/32/pgalloc.h +++ b/arch/powerpc/include/asm/book3s/32/pgalloc.h | |||
@@ -59,31 +59,6 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmdp, | |||
59 | 59 | ||
60 | #define pmd_pgtable(pmd) ((pgtable_t)pmd_page_vaddr(pmd)) | 60 | #define pmd_pgtable(pmd) ((pgtable_t)pmd_page_vaddr(pmd)) |
61 | 61 | ||
62 | pte_t *pte_fragment_alloc(struct mm_struct *mm, int kernel); | ||
63 | |||
64 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) | ||
65 | { | ||
66 | return (pte_t *)pte_fragment_alloc(mm, 1); | ||
67 | } | ||
68 | |||
69 | static inline pgtable_t pte_alloc_one(struct mm_struct *mm) | ||
70 | { | ||
71 | return (pgtable_t)pte_fragment_alloc(mm, 0); | ||
72 | } | ||
73 | |||
74 | void pte_frag_destroy(void *pte_frag); | ||
75 | void pte_fragment_free(unsigned long *table, int kernel); | ||
76 | |||
77 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | ||
78 | { | ||
79 | pte_fragment_free((unsigned long *)pte, 1); | ||
80 | } | ||
81 | |||
82 | static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage) | ||
83 | { | ||
84 | pte_fragment_free((unsigned long *)ptepage, 0); | ||
85 | } | ||
86 | |||
87 | static inline void pgtable_free(void *table, unsigned index_size) | 62 | static inline void pgtable_free(void *table, unsigned index_size) |
88 | { | 63 | { |
89 | if (!index_size) { | 64 | if (!index_size) { |
diff --git a/arch/powerpc/include/asm/book3s/64/pgalloc.h b/arch/powerpc/include/asm/book3s/64/pgalloc.h index 138bc2ecc0c4..cfd48d8cc055 100644 --- a/arch/powerpc/include/asm/book3s/64/pgalloc.h +++ b/arch/powerpc/include/asm/book3s/64/pgalloc.h | |||
@@ -39,9 +39,7 @@ extern struct vmemmap_backing *vmemmap_list; | |||
39 | extern struct kmem_cache *pgtable_cache[]; | 39 | extern struct kmem_cache *pgtable_cache[]; |
40 | #define PGT_CACHE(shift) pgtable_cache[shift] | 40 | #define PGT_CACHE(shift) pgtable_cache[shift] |
41 | 41 | ||
42 | extern pte_t *pte_fragment_alloc(struct mm_struct *, int); | ||
43 | extern pmd_t *pmd_fragment_alloc(struct mm_struct *, unsigned long); | 42 | extern pmd_t *pmd_fragment_alloc(struct mm_struct *, unsigned long); |
44 | extern void pte_fragment_free(unsigned long *, int); | ||
45 | extern void pmd_fragment_free(unsigned long *); | 43 | extern void pmd_fragment_free(unsigned long *); |
46 | extern void pgtable_free_tlb(struct mmu_gather *tlb, void *table, int shift); | 44 | extern void pgtable_free_tlb(struct mmu_gather *tlb, void *table, int shift); |
47 | #ifdef CONFIG_SMP | 45 | #ifdef CONFIG_SMP |
@@ -190,26 +188,6 @@ static inline pgtable_t pmd_pgtable(pmd_t pmd) | |||
190 | return (pgtable_t)pmd_page_vaddr(pmd); | 188 | return (pgtable_t)pmd_page_vaddr(pmd); |
191 | } | 189 | } |
192 | 190 | ||
193 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) | ||
194 | { | ||
195 | return (pte_t *)pte_fragment_alloc(mm, 1); | ||
196 | } | ||
197 | |||
198 | static inline pgtable_t pte_alloc_one(struct mm_struct *mm) | ||
199 | { | ||
200 | return (pgtable_t)pte_fragment_alloc(mm, 0); | ||
201 | } | ||
202 | |||
203 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | ||
204 | { | ||
205 | pte_fragment_free((unsigned long *)pte, 1); | ||
206 | } | ||
207 | |||
208 | static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage) | ||
209 | { | ||
210 | pte_fragment_free((unsigned long *)ptepage, 0); | ||
211 | } | ||
212 | |||
213 | static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table, | 191 | static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table, |
214 | unsigned long address) | 192 | unsigned long address) |
215 | { | 193 | { |
diff --git a/arch/powerpc/include/asm/nohash/32/pgalloc.h b/arch/powerpc/include/asm/nohash/32/pgalloc.h index 1d41508f0676..e96ef2fde2ca 100644 --- a/arch/powerpc/include/asm/nohash/32/pgalloc.h +++ b/arch/powerpc/include/asm/nohash/32/pgalloc.h | |||
@@ -77,31 +77,6 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmdp, | |||
77 | #define pmd_pgtable(pmd) ((pgtable_t)pmd_page_vaddr(pmd)) | 77 | #define pmd_pgtable(pmd) ((pgtable_t)pmd_page_vaddr(pmd)) |
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | pte_t *pte_fragment_alloc(struct mm_struct *mm, int kernel); | ||
81 | |||
82 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) | ||
83 | { | ||
84 | return (pte_t *)pte_fragment_alloc(mm, 1); | ||
85 | } | ||
86 | |||
87 | static inline pgtable_t pte_alloc_one(struct mm_struct *mm) | ||
88 | { | ||
89 | return (pgtable_t)pte_fragment_alloc(mm, 0); | ||
90 | } | ||
91 | |||
92 | void pte_frag_destroy(void *pte_frag); | ||
93 | void pte_fragment_free(unsigned long *table, int kernel); | ||
94 | |||
95 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | ||
96 | { | ||
97 | pte_fragment_free((unsigned long *)pte, 1); | ||
98 | } | ||
99 | |||
100 | static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage) | ||
101 | { | ||
102 | pte_fragment_free((unsigned long *)ptepage, 0); | ||
103 | } | ||
104 | |||
105 | static inline void pgtable_free(void *table, unsigned index_size) | 80 | static inline void pgtable_free(void *table, unsigned index_size) |
106 | { | 81 | { |
107 | if (!index_size) { | 82 | if (!index_size) { |
diff --git a/arch/powerpc/include/asm/nohash/64/pgalloc.h b/arch/powerpc/include/asm/nohash/64/pgalloc.h index 7fb87235f845..98de4f3b0306 100644 --- a/arch/powerpc/include/asm/nohash/64/pgalloc.h +++ b/arch/powerpc/include/asm/nohash/64/pgalloc.h | |||
@@ -92,31 +92,6 @@ static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) | |||
92 | kmem_cache_free(PGT_CACHE(PMD_CACHE_INDEX), pmd); | 92 | kmem_cache_free(PGT_CACHE(PMD_CACHE_INDEX), pmd); |
93 | } | 93 | } |
94 | 94 | ||
95 | pte_t *pte_fragment_alloc(struct mm_struct *mm, int kernel); | ||
96 | |||
97 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) | ||
98 | { | ||
99 | return (pte_t *)pte_fragment_alloc(mm, 1); | ||
100 | } | ||
101 | |||
102 | static inline pgtable_t pte_alloc_one(struct mm_struct *mm) | ||
103 | { | ||
104 | return (pgtable_t)pte_fragment_alloc(mm, 0); | ||
105 | } | ||
106 | |||
107 | void pte_frag_destroy(void *pte_frag); | ||
108 | void pte_fragment_free(unsigned long *table, int kernel); | ||
109 | |||
110 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | ||
111 | { | ||
112 | pte_fragment_free((unsigned long *)pte, 1); | ||
113 | } | ||
114 | |||
115 | static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage) | ||
116 | { | ||
117 | pte_fragment_free((unsigned long *)ptepage, 0); | ||
118 | } | ||
119 | |||
120 | static inline void pgtable_free(void *table, int shift) | 95 | static inline void pgtable_free(void *table, int shift) |
121 | { | 96 | { |
122 | if (!shift) { | 97 | if (!shift) { |
diff --git a/arch/powerpc/include/asm/pgalloc.h b/arch/powerpc/include/asm/pgalloc.h index e11f03007b57..c2c6fd438840 100644 --- a/arch/powerpc/include/asm/pgalloc.h +++ b/arch/powerpc/include/asm/pgalloc.h | |||
@@ -20,6 +20,31 @@ static inline gfp_t pgtable_gfp_flags(struct mm_struct *mm, gfp_t gfp) | |||
20 | 20 | ||
21 | #define PGALLOC_GFP (GFP_KERNEL | __GFP_ZERO) | 21 | #define PGALLOC_GFP (GFP_KERNEL | __GFP_ZERO) |
22 | 22 | ||
23 | pte_t *pte_fragment_alloc(struct mm_struct *mm, int kernel); | ||
24 | |||
25 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) | ||
26 | { | ||
27 | return (pte_t *)pte_fragment_alloc(mm, 1); | ||
28 | } | ||
29 | |||
30 | static inline pgtable_t pte_alloc_one(struct mm_struct *mm) | ||
31 | { | ||
32 | return (pgtable_t)pte_fragment_alloc(mm, 0); | ||
33 | } | ||
34 | |||
35 | void pte_frag_destroy(void *pte_frag); | ||
36 | void pte_fragment_free(unsigned long *table, int kernel); | ||
37 | |||
38 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | ||
39 | { | ||
40 | pte_fragment_free((unsigned long *)pte, 1); | ||
41 | } | ||
42 | |||
43 | static inline void pte_free(struct mm_struct *mm, pgtable_t ptepage) | ||
44 | { | ||
45 | pte_fragment_free((unsigned long *)ptepage, 0); | ||
46 | } | ||
47 | |||
23 | #ifdef CONFIG_PPC_BOOK3S | 48 | #ifdef CONFIG_PPC_BOOK3S |
24 | #include <asm/book3s/pgalloc.h> | 49 | #include <asm/book3s/pgalloc.h> |
25 | #else | 50 | #else |