]> Git Repo - J-linux.git/commitdiff
riscv: tlb: convert __p*d_free_tlb() to inline functions
authorJisheng Zhang <[email protected]>
Tue, 19 Dec 2023 17:50:44 +0000 (01:50 +0800)
committerPalmer Dabbelt <[email protected]>
Wed, 24 Jan 2024 23:55:54 +0000 (15:55 -0800)
This is to prepare for enabling MMU_GATHER_RCU_TABLE_FREE.
No functionality changes.

Signed-off-by: Jisheng Zhang <[email protected]>
Reviewed-by: Alexandre Ghiti <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Palmer Dabbelt <[email protected]>
arch/riscv/include/asm/pgalloc.h

index c80bb9990d32ef706452d7d4fcc1c049cd7436d9..3c5e3bd15f46e336a923e317d7db64fb528443d8 100644 (file)
@@ -95,13 +95,16 @@ static inline void pud_free(struct mm_struct *mm, pud_t *pud)
                __pud_free(mm, pud);
 }
 
-#define __pud_free_tlb(tlb, pud, addr)                                 \
-do {                                                                   \
-       if (pgtable_l4_enabled) {                                       \
-               pagetable_pud_dtor(virt_to_ptdesc(pud));                \
-               tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pud));     \
-       }                                                               \
-} while (0)
+static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
+                                 unsigned long addr)
+{
+       if (pgtable_l4_enabled) {
+               struct ptdesc *ptdesc = virt_to_ptdesc(pud);
+
+               pagetable_pud_dtor(ptdesc);
+               tlb_remove_page_ptdesc(tlb, ptdesc);
+       }
+}
 
 #define p4d_alloc_one p4d_alloc_one
 static inline p4d_t *p4d_alloc_one(struct mm_struct *mm, unsigned long addr)
@@ -130,11 +133,12 @@ static inline void p4d_free(struct mm_struct *mm, p4d_t *p4d)
                __p4d_free(mm, p4d);
 }
 
-#define __p4d_free_tlb(tlb, p4d, addr)                                 \
-do {                                                                   \
-       if (pgtable_l5_enabled)                                         \
-               tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(p4d));     \
-} while (0)
+static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d,
+                                 unsigned long addr)
+{
+       if (pgtable_l5_enabled)
+               tlb_remove_page_ptdesc(tlb, virt_to_ptdesc(p4d));
+}
 #endif /* __PAGETABLE_PMD_FOLDED */
 
 static inline void sync_kernel_mappings(pgd_t *pgd)
@@ -159,19 +163,25 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm)
 
 #ifndef __PAGETABLE_PMD_FOLDED
 
-#define __pmd_free_tlb(tlb, pmd, addr)                         \
-do {                                                           \
-       pagetable_pmd_dtor(virt_to_ptdesc(pmd));                \
-       tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd));     \
-} while (0)
+static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
+                                 unsigned long addr)
+{
+       struct ptdesc *ptdesc = virt_to_ptdesc(pmd);
+
+       pagetable_pmd_dtor(ptdesc);
+       tlb_remove_page_ptdesc(tlb, ptdesc);
+}
 
 #endif /* __PAGETABLE_PMD_FOLDED */
 
-#define __pte_free_tlb(tlb, pte, buf)                  \
-do {                                                   \
-       pagetable_pte_dtor(page_ptdesc(pte));           \
-       tlb_remove_page_ptdesc((tlb), page_ptdesc(pte));\
-} while (0)
+static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
+                                 unsigned long addr)
+{
+       struct ptdesc *ptdesc = page_ptdesc(pte);
+
+       pagetable_pte_dtor(ptdesc);
+       tlb_remove_page_ptdesc(tlb, ptdesc);
+}
 #endif /* CONFIG_MMU */
 
 #endif /* _ASM_RISCV_PGALLOC_H */
This page took 0.060808 seconds and 4 git commands to generate.