Message ID | 20250303072603.45423-1-zhengqi.arch@bytedance.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | None | expand |
On Mon, 3 Mar 2025 15:26:03 +0800 Qi Zheng <zhengqi.arch@bytedance.com> wrote: > Now, the nine architectures of csky, hexagon, loongarch, m68k, mips, > nios2, openrisc, sh and um do not select CONFIG_MMU_GATHER_RCU_TABLE_FREE, > and just call pagetable_dtor() + tlb_remove_page_ptdesc() (the wrapper of > tlb_remove_page()). This is the same as the implementation of > tlb_remove_{ptdesc|table}() under !CONFIG_MMU_GATHER_TABLE_FREE, so > convert these architectures to use tlb_remove_ptdesc(). > checkpatch warns. Do these things have to be macros? Switching to static inline fixes the unused-arg warning in a nice fashion. I'll fix the trailing-semicolon issue locally. WARNING: Argument 'address' is not used in function-like macro #51: FILE: arch/csky/include/asm/pgalloc.h:64: +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'addr' is not used in function-like macro #66: FILE: arch/hexagon/include/asm/pgalloc.h:90: +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'address' is not used in function-like macro #80: FILE: arch/loongarch/include/asm/pgalloc.h:58: +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)); WARNING: macros should not use a trailing semicolon #80: FILE: arch/loongarch/include/asm/pgalloc.h:58: +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)); WARNING: Argument 'addr' is not used in function-like macro #95: FILE: arch/m68k/include/asm/sun3_pgalloc.h:20: +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'address' is not used in function-like macro #110: FILE: arch/mips/include/asm/pgalloc.h:51: +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'addr' is not used in function-like macro #125: FILE: arch/nios2/include/asm/pgalloc.h:31: +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'addr' is not used in function-like macro #139: FILE: arch/openrisc/include/asm/pgalloc.h:67: +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'addr' is not used in function-like macro #153: FILE: arch/sh/include/asm/pgalloc.h:35: +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'address' is not used in function-like macro #167: FILE: arch/um/include/asm/pgalloc.h:28: +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) WARNING: Argument 'address' is not used in function-like macro #176: FILE: arch/um/include/asm/pgalloc.h:33: +#define __pmd_free_tlb(tlb, pmd, address) \ + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd)) WARNING: Argument 'address' is not used in function-like macro #185: FILE: arch/um/include/asm/pgalloc.h:38: +#define __pud_free_tlb(tlb, pud, address) \ + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud)) total: 0 errors, 12 warnings, 122 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. ./patches/mm-pgtable-convert-some-architectures-to-use-tlb_remove_ptdesc-v2.patch has style problems, please review. NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.
On 3/4/25 7:53 AM, Andrew Morton wrote: > On Mon, 3 Mar 2025 15:26:03 +0800 Qi Zheng <zhengqi.arch@bytedance.com> wrote: > >> Now, the nine architectures of csky, hexagon, loongarch, m68k, mips, >> nios2, openrisc, sh and um do not select CONFIG_MMU_GATHER_RCU_TABLE_FREE, >> and just call pagetable_dtor() + tlb_remove_page_ptdesc() (the wrapper of >> tlb_remove_page()). This is the same as the implementation of >> tlb_remove_{ptdesc|table}() under !CONFIG_MMU_GATHER_TABLE_FREE, so >> convert these architectures to use tlb_remove_ptdesc(). >> > > checkpatch warns. > > Do these things have to be macros? Switching to static inline fixes > the unused-arg warning in a nice fashion. This can be switched to static inline. In addition, I found that alpha, arc, microblaze, parisc, sparc32 and xtensa also have the unused-arg issue. Do I need to add a new patch to fix all of them, or just fix the newly added 11 warnings? > > I'll fix the trailing-semicolon issue locally. Thanks! > > WARNING: Argument 'address' is not used in function-like macro > #51: FILE: arch/csky/include/asm/pgalloc.h:64: > +#define __pte_free_tlb(tlb, pte, address) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'addr' is not used in function-like macro > #66: FILE: arch/hexagon/include/asm/pgalloc.h:90: > +#define __pte_free_tlb(tlb, pte, addr) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'address' is not used in function-like macro > #80: FILE: arch/loongarch/include/asm/pgalloc.h:58: > +#define __pte_free_tlb(tlb, pte, address) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)); > > WARNING: macros should not use a trailing semicolon > #80: FILE: arch/loongarch/include/asm/pgalloc.h:58: > +#define __pte_free_tlb(tlb, pte, address) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)); > > WARNING: Argument 'addr' is not used in function-like macro > #95: FILE: arch/m68k/include/asm/sun3_pgalloc.h:20: > +#define __pte_free_tlb(tlb, pte, addr) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'address' is not used in function-like macro > #110: FILE: arch/mips/include/asm/pgalloc.h:51: > +#define __pte_free_tlb(tlb, pte, address) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'addr' is not used in function-like macro > #125: FILE: arch/nios2/include/asm/pgalloc.h:31: > +#define __pte_free_tlb(tlb, pte, addr) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'addr' is not used in function-like macro > #139: FILE: arch/openrisc/include/asm/pgalloc.h:67: > +#define __pte_free_tlb(tlb, pte, addr) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'addr' is not used in function-like macro > #153: FILE: arch/sh/include/asm/pgalloc.h:35: > +#define __pte_free_tlb(tlb, pte, addr) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'address' is not used in function-like macro > #167: FILE: arch/um/include/asm/pgalloc.h:28: > +#define __pte_free_tlb(tlb, pte, address) \ > + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) > > WARNING: Argument 'address' is not used in function-like macro > #176: FILE: arch/um/include/asm/pgalloc.h:33: > +#define __pmd_free_tlb(tlb, pmd, address) \ > + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd)) > > WARNING: Argument 'address' is not used in function-like macro > #185: FILE: arch/um/include/asm/pgalloc.h:38: > +#define __pud_free_tlb(tlb, pud, address) \ > + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud)) > > total: 0 errors, 12 warnings, 122 lines checked > > NOTE: For some of the reported defects, checkpatch may be able to > mechanically convert to the typical style using --fix or --fix-inplace. > > ./patches/mm-pgtable-convert-some-architectures-to-use-tlb_remove_ptdesc-v2.patch has style problems, please review. > > NOTE: If any of the errors are false positives, please report > them to the maintainer, see CHECKPATCH in MAINTAINERS. >
On Tue, 4 Mar 2025 10:31:07 +0800 Qi Zheng <zhengqi.arch@bytedance.com> wrote: > > > On 3/4/25 7:53 AM, Andrew Morton wrote: > > On Mon, 3 Mar 2025 15:26:03 +0800 Qi Zheng <zhengqi.arch@bytedance.com> wrote: > > > >> Now, the nine architectures of csky, hexagon, loongarch, m68k, mips, > >> nios2, openrisc, sh and um do not select CONFIG_MMU_GATHER_RCU_TABLE_FREE, > >> and just call pagetable_dtor() + tlb_remove_page_ptdesc() (the wrapper of > >> tlb_remove_page()). This is the same as the implementation of > >> tlb_remove_{ptdesc|table}() under !CONFIG_MMU_GATHER_TABLE_FREE, so > >> convert these architectures to use tlb_remove_ptdesc(). > >> > > > > checkpatch warns. > > > > Do these things have to be macros? Switching to static inline fixes > > the unused-arg warning in a nice fashion. > > This can be switched to static inline. In addition, I found that alpha, > arc, microblaze, parisc, sparc32 and xtensa also have the unused-arg > issue. Do I need to add a new patch to fix all of them, or just fix the > newly added 11 warnings? I guess leave things as they are now. Switching all these to C functions can be addressed at a later time?
diff --git a/arch/csky/include/asm/pgalloc.h b/arch/csky/include/asm/pgalloc.h index bf8400c28b5a3..11055c5749686 100644 --- a/arch/csky/include/asm/pgalloc.h +++ b/arch/csky/include/asm/pgalloc.h @@ -61,11 +61,8 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) return ret; } -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc(tlb, page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) extern void pagetable_init(void); extern void mmu_init(unsigned long min_pfn, unsigned long max_pfn); diff --git a/arch/hexagon/include/asm/pgalloc.h b/arch/hexagon/include/asm/pgalloc.h index 1ee5f5f157ca7..937a11ef4c33c 100644 --- a/arch/hexagon/include/asm/pgalloc.h +++ b/arch/hexagon/include/asm/pgalloc.h @@ -87,10 +87,7 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, max_kernel_seg = pmdindex; } -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor((page_ptdesc(pte))); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif diff --git a/arch/loongarch/include/asm/pgalloc.h b/arch/loongarch/include/asm/pgalloc.h index 7211dff8c969e..73629c1b8328e 100644 --- a/arch/loongarch/include/asm/pgalloc.h +++ b/arch/loongarch/include/asm/pgalloc.h @@ -55,11 +55,8 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) return pte; } -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)); #ifndef __PAGETABLE_PMD_FOLDED diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h index 80afc3a187249..1e21c758b774e 100644 --- a/arch/m68k/include/asm/sun3_pgalloc.h +++ b/arch/m68k/include/asm/sun3_pgalloc.h @@ -17,11 +17,8 @@ extern const char bad_pmd_string[]; -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) { diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h index 26c7a6ede983c..bbca420c96d3c 100644 --- a/arch/mips/include/asm/pgalloc.h +++ b/arch/mips/include/asm/pgalloc.h @@ -48,11 +48,8 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) extern void pgd_init(void *addr); extern pgd_t *pgd_alloc(struct mm_struct *mm); -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #ifndef __PAGETABLE_PMD_FOLDED diff --git a/arch/nios2/include/asm/pgalloc.h b/arch/nios2/include/asm/pgalloc.h index 12a536b7bfbd4..db122b093a8be 100644 --- a/arch/nios2/include/asm/pgalloc.h +++ b/arch/nios2/include/asm/pgalloc.h @@ -28,10 +28,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, extern pgd_t *pgd_alloc(struct mm_struct *mm); -#define __pte_free_tlb(tlb, pte, addr) \ - do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ - } while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif /* _ASM_NIOS2_PGALLOC_H */ diff --git a/arch/openrisc/include/asm/pgalloc.h b/arch/openrisc/include/asm/pgalloc.h index 3372f4e6ab4b5..3f110931d8f6e 100644 --- a/arch/openrisc/include/asm/pgalloc.h +++ b/arch/openrisc/include/asm/pgalloc.h @@ -64,10 +64,7 @@ extern inline pgd_t *pgd_alloc(struct mm_struct *mm) extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm); -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h index 96d938fdf2244..6fe7123d38fa9 100644 --- a/arch/sh/include/asm/pgalloc.h +++ b/arch/sh/include/asm/pgalloc.h @@ -32,10 +32,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, set_pmd(pmd, __pmd((unsigned long)page_address(pte))); } -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif /* __ASM_SH_PGALLOC_H */ diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h index f0af23c3aeb2b..826ec44b58cdb 100644 --- a/arch/um/include/asm/pgalloc.h +++ b/arch/um/include/asm/pgalloc.h @@ -25,27 +25,18 @@ */ extern pgd_t *pgd_alloc(struct mm_struct *); -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #if CONFIG_PGTABLE_LEVELS > 2 -#define __pmd_free_tlb(tlb, pmd, address) \ -do { \ - pagetable_dtor(virt_to_ptdesc(pmd)); \ - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd)); \ -} while (0) +#define __pmd_free_tlb(tlb, pmd, address) \ + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd)) #if CONFIG_PGTABLE_LEVELS > 3 -#define __pud_free_tlb(tlb, pud, address) \ -do { \ - pagetable_dtor(virt_to_ptdesc(pud)); \ - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pud)); \ -} while (0) +#define __pud_free_tlb(tlb, pud, address) \ + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud)) #endif #endif