All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: peterz@infradead.org, agordeev@linux.ibm.com,
	kevin.brodsky@arm.com, tglx@linutronix.de, david@redhat.com,
	jannh@google.com, hughd@google.com, yuzhao@google.com,
	willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org,
	lorenzo.stoakes@oracle.com, akpm@linux-foundation.org,
	rientjes@google.com, vishal.moola@gmail.com, arnd@arndb.de,
	will@kernel.org, aneesh.kumar@kernel.org, npiggin@gmail.com,
	dave.hansen@linux.intel.com, ryan.roberts@arm.com,
	linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
	linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	linux-kernel@vger.kernel.org, x86@kernel.org,
	linux-arch@vger.kernel.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org,
	linux-openrisc@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-um@lists.infradead.org
Subject: Re: [PATCH v3 15/17] mm: pgtable: remove tlb_remove_page_ptdesc()
Date: Sat, 28 Dec 2024 11:26:22 +0200	[thread overview]
Message-ID: <Z2_EPmOTUHhcBegW@kernel.org> (raw)
In-Reply-To: <b37435768345e0fcf7ea358f69b4a71767f0f530.1734945104.git.zhengqi.arch@bytedance.com>

On Mon, Dec 23, 2024 at 05:41:01PM +0800, Qi Zheng wrote:
> Here we are explicitly dealing with struct page, and the following logic
> semms strange:
> 
> tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));
> 
> tlb_remove_page_ptdesc
> --> tlb_remove_page(tlb, ptdesc_page(pt));
> 
> So remove tlb_remove_page_ptdesc() and make callers call tlb_remove_page()
> directly.

Please don't. The ptdesc wrappers are there as a part of reducing the size
of struct page project [1]. 

For now struct ptdesc overlaps struct page, but the goal is to have them
separate and always operate on struct ptdesc when working with page tables.

[1] https://kernelnewbies.org/MatthewWilcox/Memdescs
 
> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
> Originally-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> ---
>  arch/csky/include/asm/pgalloc.h      | 2 +-
>  arch/hexagon/include/asm/pgalloc.h   | 2 +-
>  arch/loongarch/include/asm/pgalloc.h | 2 +-
>  arch/m68k/include/asm/sun3_pgalloc.h | 2 +-
>  arch/mips/include/asm/pgalloc.h      | 2 +-
>  arch/nios2/include/asm/pgalloc.h     | 2 +-
>  arch/openrisc/include/asm/pgalloc.h  | 2 +-
>  arch/riscv/include/asm/pgalloc.h     | 2 +-
>  arch/sh/include/asm/pgalloc.h        | 2 +-
>  arch/um/include/asm/pgalloc.h        | 8 ++++----
>  include/asm-generic/tlb.h            | 6 ------
>  11 files changed, 13 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/csky/include/asm/pgalloc.h b/arch/csky/include/asm/pgalloc.h
> index f1ce5b7b28f22..936a43a49e704 100644
> --- a/arch/csky/include/asm/pgalloc.h
> +++ b/arch/csky/include/asm/pgalloc.h
> @@ -64,7 +64,7 @@ static inline 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));	\
> +	tlb_remove_page(tlb, (pte));			\
>  } while (0)
>  
>  extern void pagetable_init(void);
> diff --git a/arch/hexagon/include/asm/pgalloc.h b/arch/hexagon/include/asm/pgalloc.h
> index 40e42a0e71673..8b1550498f1bf 100644
> --- a/arch/hexagon/include/asm/pgalloc.h
> +++ b/arch/hexagon/include/asm/pgalloc.h
> @@ -90,7 +90,7 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
>  #define __pte_free_tlb(tlb, pte, addr)				\
>  do {								\
>  	pagetable_dtor((page_ptdesc(pte)));			\
> -	tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #endif
> diff --git a/arch/loongarch/include/asm/pgalloc.h b/arch/loongarch/include/asm/pgalloc.h
> index 7211dff8c969e..5a4f22aeb6189 100644
> --- a/arch/loongarch/include/asm/pgalloc.h
> +++ b/arch/loongarch/include/asm/pgalloc.h
> @@ -58,7 +58,7 @@ static inline pte_t *pte_alloc_one_kernel(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));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #ifndef __PAGETABLE_PMD_FOLDED
> diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h
> index 2b626cb3ad0ae..63d9f95f5e3dd 100644
> --- a/arch/m68k/include/asm/sun3_pgalloc.h
> +++ b/arch/m68k/include/asm/sun3_pgalloc.h
> @@ -20,7 +20,7 @@ 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));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  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 36d9805033c4b..bbee21345154b 100644
> --- a/arch/mips/include/asm/pgalloc.h
> +++ b/arch/mips/include/asm/pgalloc.h
> @@ -57,7 +57,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
>  #define __pte_free_tlb(tlb, pte, address)			\
>  do {								\
>  	pagetable_dtor(page_ptdesc(pte));			\
> -	tlb_remove_page_ptdesc((tlb), page_ptdesc(pte));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #ifndef __PAGETABLE_PMD_FOLDED
> diff --git a/arch/nios2/include/asm/pgalloc.h b/arch/nios2/include/asm/pgalloc.h
> index 12a536b7bfbd4..641cec8fb2a22 100644
> --- a/arch/nios2/include/asm/pgalloc.h
> +++ b/arch/nios2/include/asm/pgalloc.h
> @@ -31,7 +31,7 @@ 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)));	\
> +		tlb_remove_page((tlb), (pte));				\
>  	} while (0)
>  
>  #endif /* _ASM_NIOS2_PGALLOC_H */
> diff --git a/arch/openrisc/include/asm/pgalloc.h b/arch/openrisc/include/asm/pgalloc.h
> index 596e2355824e3..e9b9bc53ece0b 100644
> --- a/arch/openrisc/include/asm/pgalloc.h
> +++ b/arch/openrisc/include/asm/pgalloc.h
> @@ -69,7 +69,7 @@ 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)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #endif
> diff --git a/arch/riscv/include/asm/pgalloc.h b/arch/riscv/include/asm/pgalloc.h
> index c8907b8317115..ab4f9b2cf9e11 100644
> --- a/arch/riscv/include/asm/pgalloc.h
> +++ b/arch/riscv/include/asm/pgalloc.h
> @@ -29,7 +29,7 @@ static inline void riscv_tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt)
>  		tlb_remove_ptdesc(tlb, pt);
>  	} else {
>  		pagetable_dtor(pt);
> -		tlb_remove_page_ptdesc(tlb, pt);
> +		tlb_remove_page(tlb, ptdesc_page((struct ptdesc *)pt));
>  	}
>  }
>  
> diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h
> index 96d938fdf2244..43812b2363efd 100644
> --- a/arch/sh/include/asm/pgalloc.h
> +++ b/arch/sh/include/asm/pgalloc.h
> @@ -35,7 +35,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
>  #define __pte_free_tlb(tlb, pte, addr)				\
>  do {								\
>  	pagetable_dtor(page_ptdesc(pte));			\
> -	tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #endif /* __ASM_SH_PGALLOC_H */
> diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h
> index f0af23c3aeb2b..98190c318a8e9 100644
> --- a/arch/um/include/asm/pgalloc.h
> +++ b/arch/um/include/asm/pgalloc.h
> @@ -28,7 +28,7 @@ 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)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #if CONFIG_PGTABLE_LEVELS > 2
> @@ -36,15 +36,15 @@ do {								\
>  #define __pmd_free_tlb(tlb, pmd, address)			\
>  do {								\
>  	pagetable_dtor(virt_to_ptdesc(pmd));			\
> -	tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd));	\
> +	tlb_remove_page((tlb), virt_to_page(pmd));		\
>  } while (0)
>  
>  #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));	\
> +	pagetable_dtor(virt_to_ptdesc(pud));			\
> +	tlb_remove_page((tlb), virt_to_page(pud));		\
>  } while (0)
>  
>  #endif
> diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
> index 69de47c7ef3c5..8d6cfe5058543 100644
> --- a/include/asm-generic/tlb.h
> +++ b/include/asm-generic/tlb.h
> @@ -504,12 +504,6 @@ static inline void tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt)
>  	tlb_remove_table(tlb, pt);
>  }
>  
> -/* Like tlb_remove_ptdesc, but for page-like page directories. */
> -static inline void tlb_remove_page_ptdesc(struct mmu_gather *tlb, struct ptdesc *pt)
> -{
> -	tlb_remove_page(tlb, ptdesc_page(pt));
> -}
> -
>  static inline void tlb_change_page_size(struct mmu_gather *tlb,
>  						     unsigned int page_size)
>  {
> -- 
> 2.20.1
> 

-- 
Sincerely yours,
Mike.

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: peterz@infradead.org, agordeev@linux.ibm.com,
	kevin.brodsky@arm.com, tglx@linutronix.de, david@redhat.com,
	jannh@google.com, hughd@google.com, yuzhao@google.com,
	willy@infradead.org, muchun.song@linux.dev, vbabka@kernel.org,
	lorenzo.stoakes@oracle.com, akpm@linux-foundation.org,
	rientjes@google.com, vishal.moola@gmail.com, arnd@arndb.de,
	will@kernel.org, aneesh.kumar@kernel.org, npiggin@gmail.com,
	dave.hansen@linux.intel.com, ryan.roberts@arm.com,
	linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org,
	linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org,
	linux-s390@vger.kernel.org, sparclinux@vger.kernel.org,
	linux-kernel@vger.kernel.org, x86@kernel.org,
	linux-arch@vger.kernel.org, linux-csky@vger.kernel.org,
	linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev,
	linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org,
	linux-openrisc@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-um@lists.infradead.org
Subject: Re: [PATCH v3 15/17] mm: pgtable: remove tlb_remove_page_ptdesc()
Date: Sat, 28 Dec 2024 11:26:22 +0200	[thread overview]
Message-ID: <Z2_EPmOTUHhcBegW@kernel.org> (raw)
In-Reply-To: <b37435768345e0fcf7ea358f69b4a71767f0f530.1734945104.git.zhengqi.arch@bytedance.com>

On Mon, Dec 23, 2024 at 05:41:01PM +0800, Qi Zheng wrote:
> Here we are explicitly dealing with struct page, and the following logic
> semms strange:
> 
> tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));
> 
> tlb_remove_page_ptdesc
> --> tlb_remove_page(tlb, ptdesc_page(pt));
> 
> So remove tlb_remove_page_ptdesc() and make callers call tlb_remove_page()
> directly.

Please don't. The ptdesc wrappers are there as a part of reducing the size
of struct page project [1]. 

For now struct ptdesc overlaps struct page, but the goal is to have them
separate and always operate on struct ptdesc when working with page tables.

[1] https://kernelnewbies.org/MatthewWilcox/Memdescs
 
> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
> Originally-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> ---
>  arch/csky/include/asm/pgalloc.h      | 2 +-
>  arch/hexagon/include/asm/pgalloc.h   | 2 +-
>  arch/loongarch/include/asm/pgalloc.h | 2 +-
>  arch/m68k/include/asm/sun3_pgalloc.h | 2 +-
>  arch/mips/include/asm/pgalloc.h      | 2 +-
>  arch/nios2/include/asm/pgalloc.h     | 2 +-
>  arch/openrisc/include/asm/pgalloc.h  | 2 +-
>  arch/riscv/include/asm/pgalloc.h     | 2 +-
>  arch/sh/include/asm/pgalloc.h        | 2 +-
>  arch/um/include/asm/pgalloc.h        | 8 ++++----
>  include/asm-generic/tlb.h            | 6 ------
>  11 files changed, 13 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/csky/include/asm/pgalloc.h b/arch/csky/include/asm/pgalloc.h
> index f1ce5b7b28f22..936a43a49e704 100644
> --- a/arch/csky/include/asm/pgalloc.h
> +++ b/arch/csky/include/asm/pgalloc.h
> @@ -64,7 +64,7 @@ static inline 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));	\
> +	tlb_remove_page(tlb, (pte));			\
>  } while (0)
>  
>  extern void pagetable_init(void);
> diff --git a/arch/hexagon/include/asm/pgalloc.h b/arch/hexagon/include/asm/pgalloc.h
> index 40e42a0e71673..8b1550498f1bf 100644
> --- a/arch/hexagon/include/asm/pgalloc.h
> +++ b/arch/hexagon/include/asm/pgalloc.h
> @@ -90,7 +90,7 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
>  #define __pte_free_tlb(tlb, pte, addr)				\
>  do {								\
>  	pagetable_dtor((page_ptdesc(pte)));			\
> -	tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #endif
> diff --git a/arch/loongarch/include/asm/pgalloc.h b/arch/loongarch/include/asm/pgalloc.h
> index 7211dff8c969e..5a4f22aeb6189 100644
> --- a/arch/loongarch/include/asm/pgalloc.h
> +++ b/arch/loongarch/include/asm/pgalloc.h
> @@ -58,7 +58,7 @@ static inline pte_t *pte_alloc_one_kernel(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));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #ifndef __PAGETABLE_PMD_FOLDED
> diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h
> index 2b626cb3ad0ae..63d9f95f5e3dd 100644
> --- a/arch/m68k/include/asm/sun3_pgalloc.h
> +++ b/arch/m68k/include/asm/sun3_pgalloc.h
> @@ -20,7 +20,7 @@ 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));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  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 36d9805033c4b..bbee21345154b 100644
> --- a/arch/mips/include/asm/pgalloc.h
> +++ b/arch/mips/include/asm/pgalloc.h
> @@ -57,7 +57,7 @@ static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
>  #define __pte_free_tlb(tlb, pte, address)			\
>  do {								\
>  	pagetable_dtor(page_ptdesc(pte));			\
> -	tlb_remove_page_ptdesc((tlb), page_ptdesc(pte));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #ifndef __PAGETABLE_PMD_FOLDED
> diff --git a/arch/nios2/include/asm/pgalloc.h b/arch/nios2/include/asm/pgalloc.h
> index 12a536b7bfbd4..641cec8fb2a22 100644
> --- a/arch/nios2/include/asm/pgalloc.h
> +++ b/arch/nios2/include/asm/pgalloc.h
> @@ -31,7 +31,7 @@ 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)));	\
> +		tlb_remove_page((tlb), (pte));				\
>  	} while (0)
>  
>  #endif /* _ASM_NIOS2_PGALLOC_H */
> diff --git a/arch/openrisc/include/asm/pgalloc.h b/arch/openrisc/include/asm/pgalloc.h
> index 596e2355824e3..e9b9bc53ece0b 100644
> --- a/arch/openrisc/include/asm/pgalloc.h
> +++ b/arch/openrisc/include/asm/pgalloc.h
> @@ -69,7 +69,7 @@ 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)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #endif
> diff --git a/arch/riscv/include/asm/pgalloc.h b/arch/riscv/include/asm/pgalloc.h
> index c8907b8317115..ab4f9b2cf9e11 100644
> --- a/arch/riscv/include/asm/pgalloc.h
> +++ b/arch/riscv/include/asm/pgalloc.h
> @@ -29,7 +29,7 @@ static inline void riscv_tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt)
>  		tlb_remove_ptdesc(tlb, pt);
>  	} else {
>  		pagetable_dtor(pt);
> -		tlb_remove_page_ptdesc(tlb, pt);
> +		tlb_remove_page(tlb, ptdesc_page((struct ptdesc *)pt));
>  	}
>  }
>  
> diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h
> index 96d938fdf2244..43812b2363efd 100644
> --- a/arch/sh/include/asm/pgalloc.h
> +++ b/arch/sh/include/asm/pgalloc.h
> @@ -35,7 +35,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd,
>  #define __pte_free_tlb(tlb, pte, addr)				\
>  do {								\
>  	pagetable_dtor(page_ptdesc(pte));			\
> -	tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #endif /* __ASM_SH_PGALLOC_H */
> diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h
> index f0af23c3aeb2b..98190c318a8e9 100644
> --- a/arch/um/include/asm/pgalloc.h
> +++ b/arch/um/include/asm/pgalloc.h
> @@ -28,7 +28,7 @@ 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)));	\
> +	tlb_remove_page((tlb), (pte));				\
>  } while (0)
>  
>  #if CONFIG_PGTABLE_LEVELS > 2
> @@ -36,15 +36,15 @@ do {								\
>  #define __pmd_free_tlb(tlb, pmd, address)			\
>  do {								\
>  	pagetable_dtor(virt_to_ptdesc(pmd));			\
> -	tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd));	\
> +	tlb_remove_page((tlb), virt_to_page(pmd));		\
>  } while (0)
>  
>  #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));	\
> +	pagetable_dtor(virt_to_ptdesc(pud));			\
> +	tlb_remove_page((tlb), virt_to_page(pud));		\
>  } while (0)
>  
>  #endif
> diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
> index 69de47c7ef3c5..8d6cfe5058543 100644
> --- a/include/asm-generic/tlb.h
> +++ b/include/asm-generic/tlb.h
> @@ -504,12 +504,6 @@ static inline void tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt)
>  	tlb_remove_table(tlb, pt);
>  }
>  
> -/* Like tlb_remove_ptdesc, but for page-like page directories. */
> -static inline void tlb_remove_page_ptdesc(struct mmu_gather *tlb, struct ptdesc *pt)
> -{
> -	tlb_remove_page(tlb, ptdesc_page(pt));
> -}
> -
>  static inline void tlb_change_page_size(struct mmu_gather *tlb,
>  						     unsigned int page_size)
>  {
> -- 
> 2.20.1
> 

-- 
Sincerely yours,
Mike.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2024-12-28  9:26 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-23  9:40 [PATCH v3 00/17] move pagetable_*_dtor() to __tlb_remove_table() Qi Zheng
2024-12-23  9:40 ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 01/17] Revert "mm: pgtable: make ptlock be freed by RCU" Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 02/17] riscv: mm: Skip pgtable level check in {pud,p4d}_alloc_one Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-27 16:40   ` Palmer Dabbelt
2024-12-27 16:40     ` Palmer Dabbelt
2024-12-28  6:36     ` Qi Zheng
2024-12-28  6:36       ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 03/17] asm-generic: pgalloc: Provide generic p4d_{alloc_one,free} Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 04/17] mm: pgtable: add statistics for P4D level page table Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 05/17] arm64: pgtable: use mmu gather to free p4d " Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 06/17] s390: pgtable: add statistics for PUD and P4D " Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 07/17] mm: pgtable: introduce pagetable_dtor() Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 08/17] arm: pgtable: move pagetable_dtor() to __tlb_remove_table() Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 09/17] arm64: " Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 10/17] riscv: " Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 11/17] x86: " Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 12/17] s390: pgtable: also move pagetable_dtor() of PxD " Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:40 ` [PATCH v3 13/17] mm: pgtable: introduce generic __tlb_remove_table() Qi Zheng
2024-12-23  9:40   ` Qi Zheng
2024-12-23  9:41 ` [PATCH v3 14/17] mm: pgtable: move __tlb_remove_table_one() in x86 to generic file Qi Zheng
2024-12-23  9:41   ` Qi Zheng
2024-12-23  9:41 ` [PATCH v3 15/17] mm: pgtable: remove tlb_remove_page_ptdesc() Qi Zheng
2024-12-23  9:41   ` Qi Zheng
2024-12-28  9:26   ` Mike Rapoport [this message]
2024-12-28  9:26     ` Mike Rapoport
2024-12-30  3:12     ` Qi Zheng
2024-12-30  3:12       ` Qi Zheng
2024-12-30  4:55       ` Andrew Morton
2024-12-30  4:55         ` Andrew Morton
2024-12-30  5:01         ` Qi Zheng
2024-12-30  5:01           ` Qi Zheng
2025-01-03 11:14     ` Peter Zijlstra
2025-01-03 11:14       ` Peter Zijlstra
2025-01-06  3:53       ` Qi Zheng
2025-01-06  3:53         ` Qi Zheng
2024-12-23  9:41 ` [PATCH v3 16/17] mm: pgtable: remove tlb_remove_ptdesc() Qi Zheng
2024-12-23  9:41   ` Qi Zheng
2024-12-23  9:41 ` [PATCH v3 17/17] mm: pgtable: introduce generic pagetable_dtor_free() Qi Zheng
2024-12-23  9:41   ` Qi Zheng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z2_EPmOTUHhcBegW@kernel.org \
    --to=rppt@kernel.org \
    --cc=agordeev@linux.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@kernel.org \
    --cc=arnd@arndb.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=hughd@google.com \
    --cc=jannh@google.com \
    --cc=kevin.brodsky@arm.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-csky@vger.kernel.org \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-openrisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=loongarch@lists.linux.dev \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=muchun.song@linux.dev \
    --cc=npiggin@gmail.com \
    --cc=peterz@infradead.org \
    --cc=rientjes@google.com \
    --cc=ryan.roberts@arm.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=vbabka@kernel.org \
    --cc=vishal.moola@gmail.com \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=x86@kernel.org \
    --cc=yuzhao@google.com \
    --cc=zhengqi.arch@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.