Received: by 2002:ab2:2441:0:b0:1f3:1f8c:d0c6 with SMTP id k1csp110343lqe; Thu, 4 Apr 2024 00:48:43 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVKoYXuAVs4veFJzIdkCX4E8ikOU8Eh5dv6YEQkIyd6dnDwTlSMFjJy+jNmFlzZTHENsRf0Z7/NYiV3PfULvBc/9dOBOKET+IuugISJ5A== X-Google-Smtp-Source: AGHT+IFDy8JPYAEFB9kSf04Nae+P59LG/JQR6ec45e3yjBZS/db80ItMeZRB7+poWO2reGAf45Vx X-Received: by 2002:a17:906:f0c5:b0:a4e:39f1:6374 with SMTP id dk5-20020a170906f0c500b00a4e39f16374mr948819ejb.24.1712216922894; Thu, 04 Apr 2024 00:48:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712216922; cv=pass; d=google.com; s=arc-20160816; b=TqsmEODWlqgQkcgMCi2WWVb63RX2/MhFWmEpvGXabS1sKh0dDxtJMI+rX5TxlIX65Z 3VfP+cE5nzMCF0tQDmfyltYjGZaukPmniISOSmUXfhBkToks2bOMRbjr9Ane3Md0RgBH m6poStgxEMjtJZeZESiIOkADyX5a9VwWj2/k4KIk+CChIOUL8qBwaWiTgjotoHgmrD+N 6KpRDxbj/WyRg6oW49aROgJKq5f1amzPrd5B/fHGUJkM5erGQRFYNo1F2PkodUYpd9XZ a5TRfZL4i1ByQCPJSFr9RfV4YGVcmBjzLmRzMmLdvX5GmwDR3SoA3WLbE7qjg18hC4uB GVsA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=JcSUJTkxP5dCs7blBEZ5y1zqGy5xZCeSoSGbDl4Kfwo=; fh=kIe2jktUoKPsM711s1HC99xzVIFcov+vFj5zb5YF11g=; b=vpti6U/ePcnmafVTVhO9suj1oppxVtBS4Ou5TiUE2XofegAo6VzApNJNjfBUoVxopT +BzAlTzOij1fmqCtc2oaRtLQRVrein/sYUPEP/jVA5PYJWhIJVLe30gXPCpRXq6CnLz7 wCdu1xVjuAQqRgSqLYqZeymdlWYBTQwszFvszo6ZJIsBUApnuGwUTPrIF7L2hcLcqXSI rfkipWNWGzill/Pje+OIG1fixU8g0TltXxHBHj/0jbljWPIRxvXTk7CB4m8u4JSH5yvM xNQ5WzuHygH82OI7gbef910iAuR91phwWPC0I8YiRvto/wrrMI54/k9UtatfRxPnDHyU s+2g==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ghiti.fr); spf=pass (google.com: domain of linux-kernel+bounces-131051-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-131051-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id m1-20020a170906234100b00a5190b36f4fsi95849eja.634.2024.04.04.00.48.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 00:48:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-131051-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ghiti.fr); spf=pass (google.com: domain of linux-kernel+bounces-131051-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-131051-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 933DC1F2697E for ; Thu, 4 Apr 2024 07:48:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 944D65C904; Thu, 4 Apr 2024 07:48:36 +0000 (UTC) Received: from mslow1.mail.gandi.net (mslow1.mail.gandi.net [217.70.178.240]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31DF463C7 for ; Thu, 4 Apr 2024 07:48:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.178.240 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712216916; cv=none; b=mNG6tQ0VGQrtohoZ/i5elLSoNgQPovGrlhZ29szuHE47z9ZPJfrbKaE/a0kak0eLOmtxMIZqzJu7EG6SUTSNr9Z7N3Wrkx2ay74MG/nx96XPhjQSUF90pRHcXDTU2LI0G3bteq9EoZkXY2tmhClcIe84TF9zYBfU9VOAa5twrcA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712216916; c=relaxed/simple; bh=6cuEysdOMQHA78g+8RSnfygXfbIu/BhcdJlH5F4q/VA=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=qbQftoMb0HHEygN4+GNpXMevm9hKXhNuLqawO/TW+gXpGGxHriMqtN74MgZn6Ra4QRR9kwWByuDgF+HTDz5uPQRnb6GvdS8oHNNREWGuLXXdBdQHyT7b4kGV6QoQwVc5pN5Y0+HtCV7YHIJF6lrtSg6Eu/QH079FMxeZFQWpZJk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr; spf=pass smtp.mailfrom=ghiti.fr; arc=none smtp.client-ip=217.70.178.240 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ghiti.fr Received: from relay7-d.mail.gandi.net (unknown [IPv6:2001:4b98:dc4:8::227]) by mslow1.mail.gandi.net (Postfix) with ESMTP id 92DE5C4241 for ; Thu, 4 Apr 2024 07:48:25 +0000 (UTC) Received: by mail.gandi.net (Postfix) with ESMTPSA id C811E20002; Thu, 4 Apr 2024 07:48:18 +0000 (UTC) Message-ID: Date: Thu, 4 Apr 2024 09:48:18 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 02/13] riscv: Factor out page table TLB synchronization Content-Language: en-US To: Samuel Holland , Palmer Dabbelt , linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Alexandre Ghiti , Jisheng Zhang , Yunhui Cui References: <20240327045035.368512-1-samuel.holland@sifive.com> <20240327045035.368512-3-samuel.holland@sifive.com> From: Alexandre Ghiti In-Reply-To: <20240327045035.368512-3-samuel.holland@sifive.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-GND-Sasl: alex@ghiti.fr 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 > --- > > 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 > > +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