From: Alexandre Ghiti <alex@ghiti.fr>
To: Samuel Holland <samuel.holland@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
linux-riscv@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Alexandre Ghiti <alexghiti@rivosinc.com>,
Jisheng Zhang <jszhang@kernel.org>,
Yunhui Cui <cuiyunhui@bytedance.com>
Subject: Re: [PATCH v6 02/13] riscv: Factor out page table TLB synchronization
Date: Thu, 4 Apr 2024 09:48:18 +0200 [thread overview]
Message-ID: <faa34598-7207-45b4-be6a-e37a1fe1d5a3@ghiti.fr> (raw)
In-Reply-To: <20240327045035.368512-3-samuel.holland@sifive.com>
On 27/03/2024 05:49, Samuel Holland wrote:
> The logic is the same for all page table levels. See commit 69be3fb111e7
> ("riscv: enable MMU_GATHER_RCU_TABLE_FREE for SMP && MMU").
>
> Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
> ---
>
> Changes in v6:
> - Move riscv_tlb_remove_ptdesc() definition to fix 32-bit build
>
> Changes in v5:
> - New patch for v5
>
> arch/riscv/include/asm/pgalloc.h | 31 +++++++++++++------------------
> 1 file changed, 13 insertions(+), 18 deletions(-)
>
> diff --git a/arch/riscv/include/asm/pgalloc.h b/arch/riscv/include/asm/pgalloc.h
> index deaf971253a2..b34587da8882 100644
> --- a/arch/riscv/include/asm/pgalloc.h
> +++ b/arch/riscv/include/asm/pgalloc.h
> @@ -15,6 +15,14 @@
> #define __HAVE_ARCH_PUD_FREE
> #include <asm-generic/pgalloc.h>
>
> +static inline void riscv_tlb_remove_ptdesc(struct mmu_gather *tlb, void *pt)
> +{
> + if (riscv_use_ipi_for_rfence())
> + tlb_remove_page_ptdesc(tlb, pt);
> + else
> + tlb_remove_ptdesc(tlb, pt);
> +}
> +
> static inline void pmd_populate_kernel(struct mm_struct *mm,
> pmd_t *pmd, pte_t *pte)
> {
> @@ -102,10 +110,7 @@ static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
> struct ptdesc *ptdesc = virt_to_ptdesc(pud);
>
> pagetable_pud_dtor(ptdesc);
> - if (riscv_use_ipi_for_rfence())
> - tlb_remove_page_ptdesc(tlb, ptdesc);
> - else
> - tlb_remove_ptdesc(tlb, ptdesc);
> + riscv_tlb_remove_ptdesc(tlb, ptdesc);
> }
> }
>
> @@ -139,12 +144,8 @@ static inline void p4d_free(struct mm_struct *mm, p4d_t *p4d)
> static inline void __p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d,
> unsigned long addr)
> {
> - if (pgtable_l5_enabled) {
> - if (riscv_use_ipi_for_rfence())
> - tlb_remove_page_ptdesc(tlb, virt_to_ptdesc(p4d));
> - else
> - tlb_remove_ptdesc(tlb, virt_to_ptdesc(p4d));
> - }
> + if (pgtable_l5_enabled)
> + riscv_tlb_remove_ptdesc(tlb, virt_to_ptdesc(p4d));
> }
> #endif /* __PAGETABLE_PMD_FOLDED */
>
> @@ -176,10 +177,7 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
> struct ptdesc *ptdesc = virt_to_ptdesc(pmd);
>
> pagetable_pmd_dtor(ptdesc);
> - if (riscv_use_ipi_for_rfence())
> - tlb_remove_page_ptdesc(tlb, ptdesc);
> - else
> - tlb_remove_ptdesc(tlb, ptdesc);
> + riscv_tlb_remove_ptdesc(tlb, ptdesc);
> }
>
> #endif /* __PAGETABLE_PMD_FOLDED */
> @@ -190,10 +188,7 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
> struct ptdesc *ptdesc = page_ptdesc(pte);
>
> pagetable_pte_dtor(ptdesc);
> - if (riscv_use_ipi_for_rfence())
> - tlb_remove_page_ptdesc(tlb, ptdesc);
> - else
> - tlb_remove_ptdesc(tlb, ptdesc);
> + riscv_tlb_remove_ptdesc(tlb, ptdesc);
> }
> #endif /* CONFIG_MMU */
>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
next prev parent reply other threads:[~2024-04-04 7:48 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-27 4:49 [PATCH v6 00/13] riscv: ASID-related and UP-related TLB flush enhancements Samuel Holland
2024-03-27 4:49 ` [PATCH v6 01/13] riscv: Flush the instruction cache during SMP bringup Samuel Holland
2024-04-24 20:50 ` Alexandre Ghiti
2024-03-27 4:49 ` [PATCH v6 02/13] riscv: Factor out page table TLB synchronization Samuel Holland
2024-04-04 7:48 ` Alexandre Ghiti [this message]
2024-03-27 4:49 ` [PATCH v6 03/13] riscv: Use IPIs for remote cache/TLB flushes by default Samuel Holland
2024-04-04 7:56 ` Alexandre Ghiti
2024-03-27 4:49 ` [PATCH v6 04/13] riscv: mm: Broadcast kernel TLB flushes only when needed Samuel Holland
2024-03-27 4:49 ` [PATCH v6 05/13] riscv: Only send remote fences when some other CPU is online Samuel Holland
2024-03-27 6:16 ` [External] " yunhui cui
2024-03-27 20:14 ` Samuel Holland
2024-03-28 2:21 ` yunhui cui
2024-04-04 8:04 ` Alexandre Ghiti
2024-03-27 4:49 ` [PATCH v6 06/13] riscv: mm: Combine the SMP and UP TLB flush code Samuel Holland
2024-03-27 6:23 ` [External] " yunhui cui
2024-03-27 4:49 ` [PATCH v6 07/13] riscv: Apply SiFive CIP-1200 workaround to single-ASID sfence.vma Samuel Holland
2024-03-27 4:49 ` [PATCH v6 08/13] riscv: Avoid TLB flush loops when affected by SiFive CIP-1200 Samuel Holland
2024-03-27 6:27 ` [External] " yunhui cui
2024-03-27 4:49 ` [PATCH v6 09/13] riscv: mm: Introduce cntx2asid/cntx2version helper macros Samuel Holland
2024-03-27 4:49 ` [PATCH v6 10/13] riscv: mm: Use a fixed layout for the MM context ID Samuel Holland
2024-03-27 4:49 ` [PATCH v6 11/13] riscv: mm: Make asid_bits a local variable Samuel Holland
2024-03-27 4:49 ` [PATCH v6 12/13] riscv: mm: Preserve global TLB entries when switching contexts Samuel Holland
2024-03-27 4:49 ` [PATCH v6 13/13] riscv: mm: Always use an ASID to flush mm contexts Samuel Holland
2024-05-14 14:00 ` [PATCH v6 00/13] riscv: ASID-related and UP-related TLB flush enhancements patchwork-bot+linux-riscv
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=faa34598-7207-45b4-be6a-e37a1fe1d5a3@ghiti.fr \
--to=alex@ghiti.fr \
--cc=alexghiti@rivosinc.com \
--cc=cuiyunhui@bytedance.com \
--cc=jszhang@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=samuel.holland@sifive.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox