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 1D44BC7618D for ; Mon, 20 Mar 2023 14:08:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6EBDD6B0075; Mon, 20 Mar 2023 10:08:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 69B866B0078; Mon, 20 Mar 2023 10:08:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53CA96B007B; Mon, 20 Mar 2023 10:08:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 414DE6B0075 for ; Mon, 20 Mar 2023 10:08:58 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id A0741A852E for ; Mon, 20 Mar 2023 14:08:57 +0000 (UTC) X-FDA: 80589457914.26.B6E585F Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf26.hostedemail.com (Postfix) with ESMTP id 0540F140009 for ; Mon, 20 Mar 2023 14:08:53 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tpRr5kRv; spf=none (imf26.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1679321334; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=MJxCjOddyT7A7I/gLOdqBjGGzMXJDL0bQXHZfHiA2i4=; b=jz8CyN9mFs2vnGMl5zKVOCq4WMsCs8JIshv8H29NJtsUuN5ykgI+lx1epT6R7EQqpUTaOV Z+X8ervBppP904Ma5Bw2ynNXv2yEyjbevOS2wMPXsEHl9MzyUbZIqD7iFc76XwkeAQBt+e vCpflD0cLRTtrH9GTjf7ba/qH5y1Gkk= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tpRr5kRv; spf=none (imf26.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1679321334; a=rsa-sha256; cv=none; b=BmRNrdIUL/j+LmpPQxL+jgQFnUE0vxPq2io5rz9uayso9yG9lruQjPoILyIVqiUBslhRR4 OPTIcbjPrsOrJqZhXl/RF1asmSrxH0i3YNzev0my3ukzkL9Ppky/RaBLOZ2gShrGYC9uuG fXVt1kC6hst3lTMoUitvu3vEoIChUIw= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=MJxCjOddyT7A7I/gLOdqBjGGzMXJDL0bQXHZfHiA2i4=; b=tpRr5kRvwQtlBuB+YU/YMpXZFe KxoTKMD3RPkaZixl8ji082MY6W6IC05IZ5EVl+lm4vGGDvWSL0bMXHKu8zsqz0Wf3qmNN5p8nt+3R 2PXoaoQjnkfGBIrOCSH8IK0DlDCSOmgrvTMKbfGmtNSkU8QyKRWpU1hRap8MXPW3V/Rb13adp/kI9 nnBl+L484LzrirsbKQ2hjfIMqec40/FLok8E9n6gVmiAT1dkoFC2UyAs48Ng2YXO3CaNZPA0uJ/zr Mdlom7lZgT+JQeJUG7UEdSoxs0jMdSjuWVbAKg3DLuAwFsO7E8tUB73N94rCPMgH7WYqWkLR6d2xW K1/AU9Tw==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1peGBl-0015zY-V2; Mon, 20 Mar 2023 14:08:41 +0000 Date: Mon, 20 Mar 2023 14:08:41 +0000 From: Matthew Wilcox To: "Yin, Fengwei" Cc: Ryan Roberts , linux-arch@vger.kernel.org, will@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 35/36] mm: Convert do_set_pte() to set_pte_range() Message-ID: References: <20230315051444.3229621-1-willy@infradead.org> <20230315051444.3229621-36-willy@infradead.org> <6dd5cdf8-400e-8378-22be-994f0ada5cc2@arm.com> <2fa5a911-8432-2fce-c6e1-de4e592219d8@arm.com> <483fd440-df7b-fab3-b138-f3789f2dc078@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <483fd440-df7b-fab3-b138-f3789f2dc078@intel.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 0540F140009 X-Stat-Signature: 1wuj9uswh6iy3r1meez3k7t1ecy7no8d X-HE-Tag: 1679321333-567418 X-HE-Meta: U2FsdGVkX1/v00oPqtsADcS5lref6mozWoKB5HMPNNucBUykDpmkJiwZtc/RMdQ9I8YyVE/sUQdJd54s/IcPbqaQj9MuqW57zSEztIPNiOXmPpBAOb6ZoITDIS7JkDC7oYzHAcaqUXrsp8fHQdWTiSI7ClbsEX/zI/IUwOBAj9YCdhYGN5wOvC065OQOySNRI8ZKRI9xYcLOm9HuPfytBb1x51/qOJpDJQ961ajiy7ixknnf7PCK5UvVUpBlvunQjxtm7ZyvyKopwLa8J+1YEQlnVPvvqnb7DJjW9S8lWN4707QFtImsZjPbuU9qFQX1mH9+tYBKDSTDdctN8iYhdGAGskAhj9r7T3wUX7bD6bVC+hVGHWivwCdEjZSTXuCwmowulggIdSIGlsHZitnA8djxj9q6LmOsUJC7s4Fkytj1lVcfA8uL+gW6SqBlkL/w3Gg1pHT9YXVUyJuznJjcZUIarr0RuxUzlOQBbV70Q8cpS9Xa8xRWnVOkaLIlIMtqwY24ysGm7iG8rumWlu7n/Wi+0XyFqhRGhSohNbMtmEoRccQHEhdGnGd2hofZXYm3AvB91vubYRJG3aIGkJ/TzUZHDwxZhlO7P3GV9oq0mZemZ34xJphgvzUt7mp2KYmQUCFJOvopkFj6Wk4ZGqoIGiT+hMEYbRMFckGujW3xh6qtzZfgLZuCMs/nLfOITASnnGdBtdI6kzr/6dSO4I03Y4rY1FNrdVxGSRhd8qD4vDanBt+VnRD22iCy9SfJ1aPyUxFn98DMP1T58XoU6W6+AsBFmjlcx7iTlC+UMVsLGVPDB114QsZO37Z97Johp4jsaOYddTK5Hl5LLq1810IBebQyO1jxry/GPJEtLPJ9uw2mk5JozhVODBBQwPPP97KGCCF6W8SQQ03dNhmwG/X3/etVdQ1d2Eocbe4PTvzNjDvbjpMDzj0NsV/nmpcXs6A/ERh68umRjW8Vh+Xy3cj TT5BBdiC 6RyfT8vUK1NwwAQRBlqK7shZdaF8/Fd67pY38ExMg3Xug7I+CfOOJHOxZ3KmAFWCeGJc2q/gg3mIptTupeJd0CnRRHiBXTUCiUJZMYjXOvyeDZqNrK4+A6voeaQ+FNGBvJriufW2fQ9NWyvy8ug+3Y6JRVky+Zeo0KI+0IF5W81eNUiH9gheh41ZXJ+Bk7u1ncnPuaBeaQ9ELH1k= 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 Mon, Mar 20, 2023 at 09:38:55PM +0800, Yin, Fengwei wrote: > Thanks a lot to Ryan for helping to test the debug patch I made. > > Ryan confirmed that the following change could fix the kernel build regression: > diff --git a/mm/filemap.c b/mm/filemap.c > index db86e459dde6..343d6ff36b2c 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -3557,7 +3557,7 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, > > ret |= filemap_map_folio_range(vmf, folio, > xas.xa_index - folio->index, addr, nr_pages); > - xas.xa_index += nr_pages; > + xas.xa_index += folio_test_large(folio) ? nr_pages : 0; > > folio_unlock(folio); > folio_put(folio); > > I will make upstream-able change as "xas.xa_index += nr_pages - 1;" Thanks to both of you! Really, we shouldn't need to interfere with xas.xa_index at all. Does this work? diff --git a/mm/filemap.c b/mm/filemap.c index 8e4f95c5b65a..e40c967dde5f 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3420,10 +3420,10 @@ static bool filemap_map_pmd(struct vm_fault *vmf, struct folio *folio, return false; } -static struct folio *next_uptodate_page(struct folio *folio, - struct address_space *mapping, - struct xa_state *xas, pgoff_t end_pgoff) +static struct folio *next_uptodate_folio(struct xa_state *xas, + struct address_space *mapping, pgoff_t end_pgoff) { + struct folio *folio = xas_next_entry(xas, end_pgoff); unsigned long max_idx; do { @@ -3461,22 +3461,6 @@ static struct folio *next_uptodate_page(struct folio *folio, return NULL; } -static inline struct folio *first_map_page(struct address_space *mapping, - struct xa_state *xas, - pgoff_t end_pgoff) -{ - return next_uptodate_page(xas_find(xas, end_pgoff), - mapping, xas, end_pgoff); -} - -static inline struct folio *next_map_page(struct address_space *mapping, - struct xa_state *xas, - pgoff_t end_pgoff) -{ - return next_uptodate_page(xas_next_entry(xas, end_pgoff), - mapping, xas, end_pgoff); -} - /* * Map page range [start_page, start_page + nr_pages) of folio. * start_page is gotten from start by folio_page(folio, start) @@ -3552,7 +3536,7 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, int nr_pages = 0; rcu_read_lock(); - folio = first_map_page(mapping, &xas, end_pgoff); + folio = next_uptodate_folio(&xas, mapping, end_pgoff); if (!folio) goto out; @@ -3574,11 +3558,11 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, ret |= filemap_map_folio_range(vmf, folio, xas.xa_index - folio->index, addr, nr_pages); - xas.xa_index += nr_pages; folio_unlock(folio); folio_put(folio); - } while ((folio = next_map_page(mapping, &xas, end_pgoff)) != NULL); + folio = next_uptodate_folio(&xas, mapping, end_pgoff); + } while (folio); pte_unmap_unlock(vmf->pte, vmf->ptl); out: rcu_read_unlock(); > Ryan and I also identify some other changes needed. I am not sure how to > integrate those changes to this series. Maybe an add-on patch after this > series? Thanks. Up to you; I'm happy to integrate fixup patches into the current series or add on new ones.