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 4CF62CD6115 for ; Mon, 9 Oct 2023 17:53:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A09B080033; Mon, 9 Oct 2023 13:53:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9B9BA80027; Mon, 9 Oct 2023 13:53:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 880E680033; Mon, 9 Oct 2023 13:53:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 7B0FC80027 for ; Mon, 9 Oct 2023 13:53:34 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 4DF98B4A38 for ; Mon, 9 Oct 2023 17:53:34 +0000 (UTC) X-FDA: 81326670348.17.0D52694 Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) by imf29.hostedemail.com (Postfix) with ESMTP id 3D4B712000E for ; Mon, 9 Oct 2023 17:53:31 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=sifive.com header.s=google header.b=klP3HcKQ; dmarc=pass (policy=reject) header.from=sifive.com; spf=pass (imf29.hostedemail.com: domain of samuel.holland@sifive.com designates 209.85.222.175 as permitted sender) smtp.mailfrom=samuel.holland@sifive.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696874011; 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=IoyXQp0nB/IWm6dvckPcOr8vbJO99u9ZUrMCMrf5qWM=; b=eh73HikEZ1A/D478B4m5hgdZPAAgikmAWMY0BbDO5oAqhKu2Z2IYkDq51MLl9duBKEOP6B SIygeNlPP0VsXuIDYMJBgtOpRD2VWp+2SvW3+mX1BjK3/Yz+e7RV0foO8vw+IiP1ETglk1 q3IZ3R/5+kbNsS2gTeXRi4ML/okoND0= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=sifive.com header.s=google header.b=klP3HcKQ; dmarc=pass (policy=reject) header.from=sifive.com; spf=pass (imf29.hostedemail.com: domain of samuel.holland@sifive.com designates 209.85.222.175 as permitted sender) smtp.mailfrom=samuel.holland@sifive.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696874011; a=rsa-sha256; cv=none; b=3lLf9HQ69Dv0jNsPYtpVv9lGqdE5VjTAavRmHUcl2qMpjH/UCQ/bG2Vea+nYvw2Tv1d9hn 2InJH6DnYJb+/60oLSD3Qb/BZf9qNo2UpfwP6wEYNycTeVO9OjQZ4r3XZwh155ZaG5SCB7 gcW09JH1XkGhqqNkXjTIxdawgTEuPIw= Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-7742be66bd3so329744285a.3 for ; Mon, 09 Oct 2023 10:53:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1696874010; x=1697478810; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=IoyXQp0nB/IWm6dvckPcOr8vbJO99u9ZUrMCMrf5qWM=; b=klP3HcKQHzY8yIv/NBhP7sf+eFJwEM8uMuII4M64CXz/eeAPBlrZ74Owl5JzJaJlL9 W1YhUYr5KgXNGtKEJReilR4332rURBgPvqAMpHIxN/wtTr1P0KkK1t1qCAFh/PJlB4x6 RCRJru+l+SW42IOTy2a0Y2fa4Je33FOgNcgoNTdcY1Awbf6tCflysvB4necZMm96WJkT Aj2s6FwtcYtugBn6qSlEJrXkmdfmuDVX0NQDA9CIhwycjhB6eGrq0GQePnk1Bz9v8QH4 W/ZqzDDIQUKYnz8mJ1DIS1ktsPNsw29ImQKrkB9nP3y+JRF9b3fBAc7+u+i/Yvsniosv mmiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696874010; x=1697478810; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IoyXQp0nB/IWm6dvckPcOr8vbJO99u9ZUrMCMrf5qWM=; b=N0BF0aFR5Ir5sJeUol8b/K7de0BTJWB6RwRH8m4c2g5pA3dByaoq42pYT/phT47Pfe s+0mGnWem3KKdmLrIeyvYGxNzWK7ckIgUIoagdodQuCPaItHO/EubU/01Of5wqLRiACi 3JDztc/IRVBiHopi7KpXgc7zKTGmAQGwDcqZR4O4Nvoy6+mkJq2ZNPjjIA4TktYCjRml OhibrpXw5gaJffPhHv/hv0h2QUal1ZUwuW60xnSWW1py3WFCXlgzDwAb8LFw22Qq2O6d B7s4yQ5CfVvpnZLxk/V3cOMvyIoSiNtZNJOWc5+0NIWGfbnwY5WitVxsujPJIPiqC9CQ Lj5Q== X-Gm-Message-State: AOJu0YwyJmHeqqRiXH1RG163JndKcBIMwWLOtdIVpESyJj5mtd1Yo6fJ CZtFKmB1E6Epwxbx4C9hMFkY/g== X-Google-Smtp-Source: AGHT+IE1Qk4KpxGExPbP+Bwm/XXhpMnfLUgfDaerG1rDq19vZJtPM/OZ16TFeKYeE6po2KeQFV7LTw== X-Received: by 2002:a05:620a:16c9:b0:76f:f11:7d1 with SMTP id a9-20020a05620a16c900b0076f0f1107d1mr14894821qkn.77.1696874010272; Mon, 09 Oct 2023 10:53:30 -0700 (PDT) Received: from ?IPV6:2600:1700:2000:b002:41c4:1832:a984:34e2? ([2600:1700:2000:b002:41c4:1832:a984:34e2]) by smtp.gmail.com with ESMTPSA id f10-20020a05620a15aa00b007659935ce64sm3681308qkk.71.2023.10.09.10.53.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Oct 2023 10:53:29 -0700 (PDT) Message-ID: <2047b2c2-bf37-4c02-9297-d89f95863ed5@sifive.com> Date: Mon, 9 Oct 2023 12:53:28 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 1/4] riscv: Improve flush_tlb() Content-Language: en-US To: Alexandre Ghiti 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 References: <20230911131224.61924-1-alexghiti@rivosinc.com> <20230911131224.61924-2-alexghiti@rivosinc.com> From: Samuel Holland In-Reply-To: <20230911131224.61924-2-alexghiti@rivosinc.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 3D4B712000E X-Stat-Signature: gp17awcpqznbrin65dn11ooptogwgnht X-Rspam-User: X-HE-Tag: 1696874011-946659 X-HE-Meta: U2FsdGVkX1/ugIhhVg0H1w96oozHsGo+YFgL9T1qo8YTHM9gT0Z6DQ6oIvzNY8iLIDHDU0emy/DtWhV40No84Dbc8XgjZW+YjqoHYa4dyP1Wh9mU1/hvVAI5qEUpcucHjgR3pTSSlBXRuL5Ui1FayGv/qca8VHTHhhy+L3u0FS/9NliSBSeToTXFZ8n6eJs9wkIKuNU6HPaTxtXLZTT+tkvVk6EJtSKGYhSiXnss8PpWG55fMDnIIMkPWIUG6bi9PF5N/YUTR+6ZaVbc+xm+Ly9TXvlTNPnnCR8E/Sd1sfJrFoOXv4INMvKmNDwftxdrFjDsc7dqjefRFTH2XVOIC25hL/xNbu/12YsE0QTYZkRVYQXiHYqpl8IqQ/RwczhOoolFOXOP4J9njhJwNKCrxzvdOsqpIQwhmvM3M8NfH4zpBz2APIRWpqYO6WMBL2uBwbtyFML7ES7DZyjk0QBU/M3ZphJgjJPiaeE7rbdwwgESKPnpwAlftfrUckkmBB0cRhFrAbyh94/x4wWxa2p3D4IsIlK5EwyN1xyj4fZ5eFWg8E/IFau3T31zxvgIhGWTIyZhajTBX/k8BJTLjgrWVLZDygaOpyukilwjKCBAKHcRLIwtywS1JOcDDsoZt8zwhA0jcCE/5aVBgWnUwom/Pz6SWNRQF83gc2otOHexzUyPFGkZKpDuMfoQ5gO2Rwe8rHzy9uwxQGozZAyfnrLW6MoBkU9myZdjn6hBHKnMcJDoL95tMwQlAqluaQ1Ne0WXWFj4CXKk+doGgMgpGK1jTQXCLoQfftrlLw6HMGlmhGLWiu5gJCT5TTL8PCeTOTtZ//pSQq/Wc/a+ukMrmXVkwN6GFTXsGrYIbxGiKro2Q2NwSp8jiFwiXR7GipZhqYZtR4/UiVce6UHCW8Ko8ICWBz/LPp3itjX2OEXf1t1jIvSgZhBw2Kf8rYK+xtpDTjUlX+PbepkDf6pDLoNyzYE ZRLGVbxt oA0+ndEj56p7SAB2KKgliz/DpbHRcUOPUVAIsc8ByYhqSh/lqf1fn+VJLy1g5diigAcJfNE7fhXZZJyvvN+Seakkav5Ge+9H9vkdZngvlSB11QU5+AkgHdM/M00QwHFPHAfTb16s80yVToYX8jRE2MmtmbhtqUqVuNEXJSApznkJZuXQdZpTGUJy4Hz1NVsCT9umD+WO6tgwzTRUw24Czo7lGd9p34kKs81hHDN8ADG4gM5qG00UFAm6sM35OYiLxA4U6nIN+IPHgKKa4Zl1r5epVPLM//3IBvZjWOGvNdwDq385yES8c598Bz4f0phV5af4+cFi1CcEv1IryG0QXAank9qCenXqikcqFNeWuyr48iOp5xzBCgpRgM2l2viPb16Nn1/JVwXbdC8grNjDv6KRrFl4ExmKf4u0C0w9/QgOCV1RNyts4wInRWR/UX5fg6SONplJynzU3hg0T5KUJ6eIxrplMipCCM4CPuK7Svr/x6LwhPUlODc6O0MRIF4Dv/H8sYTn4I9eWv5Gj66NC8Ox9gxf+RCgGFgYTbuvGjK8FHQMB2Ell5TGIWdiYbnAomq0YaSxKYyuOekRksTuQ1R+aANTxcXeGedfGxMt9KJnCHca309TroqcUWdE9xwt5TFwBMWueJ21czWsEB5voFuYQhRqUF2EOtisTnZaE85/rlQaW875p+nDgDLr8yLFhPWR0 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: 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 > flush of the whole TLB. So let's use mmu_gather fields to provide a more > 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_struct *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);