From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 990E9CDB47E for ; Wed, 18 Oct 2023 11:26:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 122B28D014F; Wed, 18 Oct 2023 07:26:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D2B88D0016; Wed, 18 Oct 2023 07:26:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F05388D014F; Wed, 18 Oct 2023 07:26:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DFAE88D0016 for ; Wed, 18 Oct 2023 07:26:40 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B56E8C01A2 for ; Wed, 18 Oct 2023 11:26:40 +0000 (UTC) X-FDA: 81358354560.27.AEE3D25 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by imf03.hostedemail.com (Postfix) with ESMTP id C8BDD2000C for ; Wed, 18 Oct 2023 11:26:37 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=j49A7zUF; dmarc=none; spf=pass (imf03.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697628398; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Fo7B+cdiTA7QkXzogWs+Pqnw9GSLWygwDRl43SgG4dc=; b=lCcA1jUYP4D3KVWEa2lk+Y1nJ0YmFb/lTm4KEvzYyBTQZHG2OHO+BagzDG+M6xm3H7C4rz B4qqLHYbBWVq6oQIxKAqlh9AFga8oae+WLl0VDoYHR+iIyJG7vqD/bzYO6sf1LHm4fIgkd PSGAXrORT1BdQqGOHrZsze6zt1uH8PI= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=j49A7zUF; dmarc=none; spf=pass (imf03.hostedemail.com: domain of alexghiti@rivosinc.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=alexghiti@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697628398; a=rsa-sha256; cv=none; b=p6Vnw+DZUJ/Q8VszVQ/W3BQyC8DwmAfpp1hoEAxUfEByX+N3bjSxkhH7aShUbC8ixQF2B2 g5XUk6xOuOJESxk6/DyckMauLrIWmUdreWwWsQZbx863Vk/Sm/OYYeaFBq685zaoXNW4II 0YRuvw7K72LcgDlGPU2qQzPkildaMnc= Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-407c3adef8eso13165055e9.2 for ; Wed, 18 Oct 2023 04:26:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1697628396; x=1698233196; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Fo7B+cdiTA7QkXzogWs+Pqnw9GSLWygwDRl43SgG4dc=; b=j49A7zUFXRg6rit8mCi5vY8HlHnx3cU/LHBc1ptqKyy1qEvJ9qB65GPlBupo7Sz5go BRmarK/7sIp7e5ahqfPqzG0oE/opwJ8KzN7gwNnvzRJ2ntvEhWc8lkJM4nheBcUU8toY PXY42MPRCDN46sc31dIWyugarTooa2ubCx1dY5hkoVMtJ4OMiJBSuYqckwk21o6uL0ek SaftRaDSrxX55bulS8I8qNJ/QU20k/7MH5OcWZmPcXUHxRpR+1DGJZzPtbXVaPwrf1pw VjOtMHNIEXv9U2MwQDGlO9pDo/iwQAfRvu5JS49msuy5a/QWuK2cTufGuWhzE8VQdKv1 Qg+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697628396; x=1698233196; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fo7B+cdiTA7QkXzogWs+Pqnw9GSLWygwDRl43SgG4dc=; b=BEuHYcFO9fgL7tiszxXXh/DsIul4wMXLxsuv41cqHe+toZciTUAmjVvxPA5qTdETOe lsK9fQuA1+thu+jqwGquEZSZv47Vfuzh7SDXk11o7+TvBYrpT2H3mB1a1aOy6RLv2cFW Fvu6ie2GstT/SRSZBxcyFO4/tGkvFvdsyz3Vb39+DZsSLNZF9FOwOoFc5nZWhhgrH2PL Q1gdsEvQdejuIaOu8sIKzl9BXG3Uvtkl8fBFF3c7gBzCQZhgYIRPiRvnTTQr6R6tGLup /p+ezWfoWEVQ/WbahzPwrkqbaaCXf3Om4XZsa3M0MPhofqH/wpf00WhfPO2kvId6pr54 KQaw== X-Gm-Message-State: AOJu0YzxCwyO1eVJghCKzQN/LwzM7jkTUMj1Yriv0QNZDlv7NQVyhbAT GdXSElszkjI6YlxEDyBZy9zXShx39yJSsVgJR7QsZA== X-Google-Smtp-Source: AGHT+IEGTdYVt+EPdhZK2SJoJGQwAAt5GzCSXuLlL/UEP8u+GheBaAJrwgwf37URmrStLQQQxRBRAHFjOKB/q7DtxmM= X-Received: by 2002:a5d:58da:0:b0:32d:b051:9a2b with SMTP id o26-20020a5d58da000000b0032db0519a2bmr4179536wrf.2.1697628396063; Wed, 18 Oct 2023 04:26:36 -0700 (PDT) MIME-Version: 1.0 References: <20230911131224.61924-1-alexghiti@rivosinc.com> <20230911131224.61924-2-alexghiti@rivosinc.com> <2047b2c2-bf37-4c02-9297-d89f95863ed5@sifive.com> In-Reply-To: <2047b2c2-bf37-4c02-9297-d89f95863ed5@sifive.com> From: Alexandre Ghiti Date: Wed, 18 Oct 2023 13:26:25 +0200 Message-ID: Subject: Re: [PATCH v4 1/4] riscv: Improve flush_tlb() To: Samuel Holland Cc: Andrew Jones , Will Deacon , "Aneesh Kumar K . V" , Andrew Morton , Nick Piggin , Peter Zijlstra , Mayuresh Chitale , Vincent Chen , Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Samuel Holland , Lad Prabhakar Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: C8BDD2000C X-Stat-Signature: 88ga87ozso5omzj6dhzto478ikw7eyx7 X-HE-Tag: 1697628397-700032 X-HE-Meta: U2FsdGVkX18s3j6Hhv1thN4trmn/k33pjiLccFA9FStH1h9fg/jW1ndDBfNY8LU/Sw+cX+FAvALmkVFFSWetsH8B/iy7VxtHKDjXw05ZGDOUwKGhlpgRCEMUZTcRdN1BGEOpB/XDFxwv2T+jie9b1L2pCHuxlFWkVwLpQST8a/v9gmfBBIf1K1VhnF5Wa0tqlEAc8Fe/CisuNxlTsOaTUb8mE3EJhQ1PosN0+650S397i8yDcxrS8LRU9RzqKZaCvaouHrOrFNSv6cok+JR6mAgbM/3LHd7BBcuKNFcyEket2wGwL8kpdW93sxt9eUH2qDMMHyoMhoVn/qKzR1KiibCJIiul22VYzsGJPRn+jwIw0ewSOFYfPmkFDdh+p6D7eGJ+p10SVI2jduLjeD8ZqIGaLZmBBVkcRQz8/zyXSInqqRQ/tmQOEqYRvM0v6IYYkCnhtEUliTY3OiMFU8O/Ecdfjz5g4JDHPy8PiaxsSETafwmYqbgSosIs6TkDfyUNKbuZYUJOriLTBCM2D5+HcWu5uSMALwthcccY38KwPnQyUTuRvDS+u4mxcRmh/Gd/gHkbkspgM0p2wXkYmFAPj3p1gqHDbkOhhPNTF3B7mQ6UcMJ6eQwGBqxcWnlFgJzdRmIrIUptrjTbmmDnw/MPOfczxKc8UU7aGBgQNBm3CVUoM25rjY9weIfrsh629EXU0/XRPsps2rKIQ657IM2snUBKKsRj3gQAH3hXUq4K0Zm+ngthPxIZb+38KvVIy6/Tk3SUFpR8TueBXLLXgHWuocLv7aVq4bOHFBlCJAah2tywxdRKBBBQR6eegtb1ixf/b4mi+LAYIV5nczHat0O+yuhJOup+HZsQI7HKP9yiae181U5LODYOmHZWbML8wyW3V2wSSAj0pl8xB0XL2vHoCSKM0ISyPqrzzA96UzYKHqGmfEq6D+z04kTLiSk/PDCTkWEUf4QnekqTxPJ+Laa DkYrgsja luRUGDEqM6gAtteHeZruk/5EEmD2TWb3ZPML4qW1gErCK+rcznS+ujlZl2DjoWLErZ3lLqkMtmFOEeySnCZqWaCokk6kuhU5PXSvRGRJT3vfed0+Ut1FjorhAZSn7TXZwwWF70pHwzXQZ3eBZ9od4sNJvvOnwKZ/nwA7kwrvMblouGdDtFLGgNeJ8jLB+leXSD9XJtEym36/TNsVfCYJXiDtX6rcANQlrzYOREAM2rOwVHtLnqCNA1+2pTkbDJvXZBEvuzhL3pTLGJteYdErn+yiCdqxgj6tHiZAq2gTj/jtcsmvkzzBUM1u50Y3IJm8ltqIXi25sKz0ojd5ZDPwt04BmzagnKYhFtOKIyycU4M7su5WKJG9WDnWCVme5uVa9zPnhWnzOWqzn4Ul63MHsTGHY/c1kTAsqLxbfVswfnlr92gVB9hmip6HTehmAe+Fmbtm856yThbiYVZSbwK3fQnLt2X9vXMVMEhAiKdAAkYMDy4z2ek8ijOrK0t8xOlz7g/OmfzK3u7T6Kl9KyjaLfQN7PJDoOLa4CuOYPzETzQw4dbo2XjpwJilK3ooLl1gaj1LX X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hi Samuel, On Mon, Oct 9, 2023 at 7:53=E2=80=AFPM Samuel Holland wrote: > > On 2023-09-11 8:12 AM, Alexandre Ghiti wrote: > > For now, flush_tlb() simply calls flush_tlb_mm() which results in a > > s/flush_tlb/tlb_flush/ here and in the subject. > > Otherwise: > Reviewed-by: Samuel Holland Ahah good catch, thanks for that and the RB! Alex > > > flush of the whole TLB. So let's use mmu_gather fields to provide a mor= e > > fine-grained flush of the TLB. > > > > Signed-off-by: Alexandre Ghiti > > Reviewed-by: Andrew Jones > > --- > > arch/riscv/include/asm/tlb.h | 8 +++++++- > > arch/riscv/include/asm/tlbflush.h | 3 +++ > > arch/riscv/mm/tlbflush.c | 7 +++++++ > > 3 files changed, 17 insertions(+), 1 deletion(-) > > > > diff --git a/arch/riscv/include/asm/tlb.h b/arch/riscv/include/asm/tlb.= h > > index 120bcf2ed8a8..1eb5682b2af6 100644 > > --- a/arch/riscv/include/asm/tlb.h > > +++ b/arch/riscv/include/asm/tlb.h > > @@ -15,7 +15,13 @@ static void tlb_flush(struct mmu_gather *tlb); > > > > static inline void tlb_flush(struct mmu_gather *tlb) > > { > > - flush_tlb_mm(tlb->mm); > > +#ifdef CONFIG_MMU > > + if (tlb->fullmm || tlb->need_flush_all) > > + flush_tlb_mm(tlb->mm); > > + else > > + flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end, > > + tlb_get_unmap_size(tlb)); > > +#endif > > } > > > > #endif /* _ASM_RISCV_TLB_H */ > > diff --git a/arch/riscv/include/asm/tlbflush.h b/arch/riscv/include/asm= /tlbflush.h > > index a09196f8de68..f5c4fb0ae642 100644 > > --- a/arch/riscv/include/asm/tlbflush.h > > +++ b/arch/riscv/include/asm/tlbflush.h > > @@ -32,6 +32,8 @@ static inline void local_flush_tlb_page(unsigned long= addr) > > #if defined(CONFIG_SMP) && defined(CONFIG_MMU) > > void flush_tlb_all(void); > > void flush_tlb_mm(struct mm_struct *mm); > > +void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start, > > + unsigned long end, unsigned int page_size); > > void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr); > > void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, > > unsigned long end); > > @@ -52,6 +54,7 @@ static inline void flush_tlb_range(struct vm_area_str= uct *vma, > > } > > > > #define flush_tlb_mm(mm) flush_tlb_all() > > +#define flush_tlb_mm_range(mm, start, end, page_size) flush_tlb_all() > > #endif /* !CONFIG_SMP || !CONFIG_MMU */ > > > > /* Flush a range of kernel pages */ > > diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c > > index 77be59aadc73..fa03289853d8 100644 > > --- a/arch/riscv/mm/tlbflush.c > > +++ b/arch/riscv/mm/tlbflush.c > > @@ -132,6 +132,13 @@ void flush_tlb_mm(struct mm_struct *mm) > > __flush_tlb_range(mm, 0, -1, PAGE_SIZE); > > } > > > > +void flush_tlb_mm_range(struct mm_struct *mm, > > + unsigned long start, unsigned long end, > > + unsigned int page_size) > > +{ > > + __flush_tlb_range(mm, start, end - start, page_size); > > +} > > + > > void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) > > { > > __flush_tlb_range(vma->vm_mm, addr, PAGE_SIZE, PAGE_SIZE); >