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 6E889C25B10 for ; Fri, 10 May 2024 09:05:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DCA366B009A; Fri, 10 May 2024 05:05:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D52646B009B; Fri, 10 May 2024 05:05:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BF2A46B009C; Fri, 10 May 2024 05:05:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9CD326B009A for ; Fri, 10 May 2024 05:05:40 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 17852815FE for ; Fri, 10 May 2024 09:05:40 +0000 (UTC) X-FDA: 82101903240.15.4FEFA1F Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf20.hostedemail.com (Postfix) with ESMTP id 295D21C000D for ; Fri, 10 May 2024 09:05:37 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715331938; 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; bh=G83iPV+wQHOxowMpj1akcKwTDff3i5TU84YwdWeCLJg=; b=pSJsne3yeJwXPQyKg56MqFID3wy9zTu24ruDpz48sJNxP3vQaGo/VE+kNFUXf9q4ofeCct qTd8WgPjVesBC71y/2sWOeoWO+h3OY1PfZJig2ws1WlIo5PhfYmfi1VC6H8SMJU+RQkGrp axDpTV269Vz9pTF2rqaryalmhTyO+zA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715331938; a=rsa-sha256; cv=none; b=SkDnl0rmys5b12/GnEp5MZoZFheMfQJvVckFk9Kc5iLOCChsnEi5jTcQi1YVlvVd7UeymR rgTuko1ts9YCSNeeNKHbcWKD+sX74vBGxp73KxuQ5QcGpWr5fvxuBLZba5NnglXJdBAjwL 6hRTOJCELpJk9H2xHZM8g9TSqcivZNY= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; spf=pass (imf20.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 67B2B106F; Fri, 10 May 2024 02:06:02 -0700 (PDT) Received: from [10.57.65.1] (unknown [10.57.65.1]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E08003F762; Fri, 10 May 2024 02:05:34 -0700 (PDT) Message-ID: Date: Fri, 10 May 2024 10:05:33 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 5/5] mm: Add update_mmu_tlb_range() Content-Language: en-GB To: Bang Li , akpm@linux-foundation.org, chenhuacai@kernel.org, tsbogend@alpha.franken.de, paul.walmsley@sifive.com, palmer@dabbelt.com, chris@zankel.net, jcmvbkbc@gmail.com Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, loongarch@lists.linux.dev, linux-riscv@lists.infradead.org, david@redhat.com, ioworker0@gmail.com, libang.linux@gmail.com References: <20240506155120.83105-1-libang.li@antgroup.com> <20240506155120.83105-6-libang.li@antgroup.com> From: Ryan Roberts In-Reply-To: <20240506155120.83105-6-libang.li@antgroup.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: 84cnz69usa46onthjf9gpq9d44j64jgx X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 295D21C000D X-HE-Tag: 1715331937-670223 X-HE-Meta: U2FsdGVkX18yZ/FHwin3HBGWiOySSG2MH0CqhG69BRYTFrR+4dXWm7MaAt7cmP9zZQ3XhnLl4x1qpJq6GgccsmCHA73r6opHBDR96UI3Yv4xQXLNNiv+cARjxOb5i9HniBPSrDsOjJG7DC3xB5h9sllxbRVqHVFStLBHlcp/87U2xOMbRh9gi2+Q2vwD71Qc19a89XqdEKb9gEMbRQUnegL1kiJ4D8OdNFXzOYykcv3XDCtOmME2eZ/miC4uw4zXZHTio+1hozKV/sh2tZ9Zk0SMRqcbuojUbe3ihd5oU4E/3jqGQenf9sYrVOayGIpVjdQhFjoALeFZKWND9D4WIBay2Qkpm1lrPuF43njAX754pDaJs6XICTc3deGVA96lBeLAfbpIqEZw9uDKMRuHZ4y/+55pxpSQFToQI1GuYYG70jGBZNCzeMDNRJz6csSpoaRCtOphKekddngoI72xfzdo0es36AigkBgMt0JsJjf4+XMeGrJBATQ6VKTk0Omfzaa/YPkmvwFHoswRxnImXmLJ4qawvLHidRdu4BMPHk/klv18nga1VIzvBk604KqCTM7s1d4N+5FQzuxYRUD8Bi7RIsoeGmwZmsBJDG3zKlD6dNtOK/wmf3xOkETGLATCjyXmGDvxFEKdMUnDGnGqe7fSHJyfK8uzgnsyxQ8fDpaMXZGQXAkPX+Px5/qCHwv2e97apkbgmFFgys1+k+Imj2hl6mz6Me6u8iJmoFh+dMJsxaaXdutGyWCTu9wd0y8l85+W3GaoWYBfgBwUAEML3oWJKG4+vVuITWJpms0GhU13s7tworKS72EhfduCuh5Tu6lhkvRzgrTBTHLf9DaiXI5YQaDJ29cAWt5gEfx/6jne82hc29GHEXJvO23g4rZVGTHp3d/LbsXd9RNTWw2EoBoOh3+rrC9jxmYS4iRm6LD/53Tu+WTo7FZwJqC3Cq8zRs97jPmHnH2zMTJn79L 3EmCp5JZ gk1NCbcJyX7Mq0me2uYfKu6Gkc3ywRDQf7c+1ScAG8X2QwvRXGcZgTu5HmQar02WCcKvOMnWlhnVZd9FVsilSOpJlsIgBrh2NOLmyBH+zun8Y09sppLOXyVKxB4uFuD3tc1kBElu9Dx9zrsPwCKILTjn6ydPjLeTv4nk7IQ4yi6FLyHEOdbVTwiqbvvbxyexJJMw811kShlza886scr6+3DW/HhEDV6sY9zkedk6NHE31NkpyXpqp4/pkJv++S50YAtN9U86Xi62bEwxQdu38M3cDzZvcIfdNs5cngQT3s+igp9Huq1o98iZiv8qJju03TGOi8HCltTCwGvE= 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: List-Subscribe: List-Unsubscribe: On 06/05/2024 16:51, Bang Li wrote: > After the commit 19eaf44954df ("mm: thp: support allocation of anonymous > multi-size THP"), it may need to batch update tlb of an address range > through the update_mmu_tlb function. We can simplify this operation by > adding the update_mmu_tlb_range function, which may also reduce the > execution of some unnecessary code in some architectures. > > Signed-off-by: Bang Li > --- > include/linux/pgtable.h | 8 ++++++++ > mm/memory.c | 4 +--- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index 18019f037bae..869bfe6054f1 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -737,6 +737,14 @@ static inline void update_mmu_tlb(struct vm_area_struct *vma, > #define __HAVE_ARCH_UPDATE_MMU_TLB > #endif Given you are implementing update_mmu_tlb_range() in all the arches that currently override update_mmu_tlb() I wonder if it would be cleaner to remove update_mmu_tlb() from all those arches, and define generically, removing the ability for arches to override it: static inline void update_mmu_tlb(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) { update_mmu_tlb_range(vma, address, ptep, 1); } > > +#ifndef __HAVE_ARCH_UPDATE_MMU_TLB_RANGE > +static inline void update_mmu_tlb_range(struct vm_area_struct *vma, > + unsigned long address, pte_t *ptep, unsigned int nr) > +{ > +} > +#define __HAVE_ARCH_UPDATE_MMU_TLB_RANGE > +#endif Then you could use the modern override scheme as Lance suggested and you won't have any confusion with __HAVE_ARCH_UPDATE_MMU_TLB because it won't exist anymore. > + > /* > * Some architectures may be able to avoid expensive synchronization > * primitives when modifications are made to PTE's which are already > diff --git a/mm/memory.c b/mm/memory.c > index eea6e4984eae..2d53e29cf76e 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4421,7 +4421,6 @@ static vm_fault_t do_anonymous_page(struct vm_fault *vmf) > vm_fault_t ret = 0; > int nr_pages = 1; > pte_t entry; > - int i; > > /* File mapping without ->vm_ops ? */ > if (vma->vm_flags & VM_SHARED) > @@ -4491,8 +4490,7 @@ static vm_fault_t do_anonymous_page(struct vm_fault *vmf) > update_mmu_tlb(vma, addr, vmf->pte); > goto release; > } else if (nr_pages > 1 && !pte_range_none(vmf->pte, nr_pages)) { > - for (i = 0; i < nr_pages; i++) > - update_mmu_tlb(vma, addr + PAGE_SIZE * i, vmf->pte + i); > + update_mmu_tlb_range(vma, addr, vmf->pte, nr_pages); I certainly agree that this will be a useful helper to have. I expect there will be more users in future. > goto release; > } >