15
15
#define __HAVE_ARCH_PUD_FREE
16
16
#include <asm-generic/pgalloc.h>
17
17
18
+ static inline void riscv_tlb_remove_ptdesc (struct mmu_gather * tlb , void * pt )
19
+ {
20
+ if (riscv_use_ipi_for_rfence ())
21
+ tlb_remove_page_ptdesc (tlb , pt );
22
+ else
23
+ tlb_remove_ptdesc (tlb , pt );
24
+ }
25
+
18
26
static inline void pmd_populate_kernel (struct mm_struct * mm ,
19
27
pmd_t * pmd , pte_t * pte )
20
28
{
@@ -102,10 +110,7 @@ static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
102
110
struct ptdesc * ptdesc = virt_to_ptdesc (pud );
103
111
104
112
pagetable_pud_dtor (ptdesc );
105
- if (riscv_use_ipi_for_rfence ())
106
- tlb_remove_page_ptdesc (tlb , ptdesc );
107
- else
108
- tlb_remove_ptdesc (tlb , ptdesc );
113
+ riscv_tlb_remove_ptdesc (tlb , ptdesc );
109
114
}
110
115
}
111
116
@@ -139,12 +144,8 @@ static inline void p4d_free(struct mm_struct *mm, p4d_t *p4d)
139
144
static inline void __p4d_free_tlb (struct mmu_gather * tlb , p4d_t * p4d ,
140
145
unsigned long addr )
141
146
{
142
- if (pgtable_l5_enabled ) {
143
- if (riscv_use_ipi_for_rfence ())
144
- tlb_remove_page_ptdesc (tlb , virt_to_ptdesc (p4d ));
145
- else
146
- tlb_remove_ptdesc (tlb , virt_to_ptdesc (p4d ));
147
- }
147
+ if (pgtable_l5_enabled )
148
+ riscv_tlb_remove_ptdesc (tlb , virt_to_ptdesc (p4d ));
148
149
}
149
150
#endif /* __PAGETABLE_PMD_FOLDED */
150
151
@@ -176,10 +177,7 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
176
177
struct ptdesc * ptdesc = virt_to_ptdesc (pmd );
177
178
178
179
pagetable_pmd_dtor (ptdesc );
179
- if (riscv_use_ipi_for_rfence ())
180
- tlb_remove_page_ptdesc (tlb , ptdesc );
181
- else
182
- tlb_remove_ptdesc (tlb , ptdesc );
180
+ riscv_tlb_remove_ptdesc (tlb , ptdesc );
183
181
}
184
182
185
183
#endif /* __PAGETABLE_PMD_FOLDED */
@@ -190,10 +188,7 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
190
188
struct ptdesc * ptdesc = page_ptdesc (pte );
191
189
192
190
pagetable_pte_dtor (ptdesc );
193
- if (riscv_use_ipi_for_rfence ())
194
- tlb_remove_page_ptdesc (tlb , ptdesc );
195
- else
196
- tlb_remove_ptdesc (tlb , ptdesc );
191
+ riscv_tlb_remove_ptdesc (tlb , ptdesc );
197
192
}
198
193
#endif /* CONFIG_MMU */
199
194
0 commit comments