[{"id":3684667,"web_url":"http://patchwork.ozlabs.org/comment/3684667/","msgid":"<afNMkqwxC00OT134@casper.infradead.org>","date":"2026-04-30T12:35:30","subject":"Re: [PATCH v2 4/5] mm: Don't retry page fault if folio is uptodate\n during swap-in","submitter":{"id":70855,"url":"http://patchwork.ozlabs.org/api/people/70855/","name":"Matthew Wilcox","email":"willy@infradead.org"},"content":"On Thu, Apr 30, 2026 at 12:04:26PM +0800, Barry Song (Xiaomi) wrote:\n> If we are waiting for long I/O to complete, it makes sense to\n> avoid holding locks for too long. However, if the folio is\n> uptodate, we are likely only waiting for a concurrent PTE\n> update to finish. Retrying the entire page fault seems\n> excessive.\n\nI think the idea is good, but the implementation is misplaced.\nThe check for folio_uptodate() should be inside folio_lock_or_retry()\nrather than tampering with FAULT_FLAG_ALLOW_RETRY in its caller.\n\nSimilarly for your next patch.\n\n> Signed-off-by: Barry Song (Xiaomi) <baohua@kernel.org>\n> ---\n>  mm/memory.c | 7 +++++++\n>  1 file changed, 7 insertions(+)\n> \n> diff --git a/mm/memory.c b/mm/memory.c\n> index 0c740ca363cc..a2e4f2d87ec8 100644\n> --- a/mm/memory.c\n> +++ b/mm/memory.c\n> @@ -4949,6 +4949,13 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)\n>  \t}\n>  \n>  \tswapcache = folio;\n> +\t/*\n> +\t * If the folio is uptodate, we are likely only waiting for\n> +\t * another concurrent PTE mapping to complete, which should\n> +\t * be brief. No need to drop the lock and retry the fault.\n> +\t */\n> +\tif (folio_test_uptodate(folio))\n> +\t\tvmf->flags &= ~FAULT_FLAG_ALLOW_RETRY;\n>  \tret |= folio_lock_or_retry(folio, vmf);\n>  \tif (ret & VM_FAULT_RETRY) {\n>  \t\tif (fault_flag_allow_retry_first(vmf->flags) &&\n> -- \n> 2.39.3 (Apple Git-146)\n> \n>","headers":{"Return-Path":"\n <linuxppc-dev+bounces-20342-incoming=patchwork.ozlabs.org@lists.ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=iAUflMNT;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=2404:9400:21b9:f100::1; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-20342-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2001:8b0:10b:1236::1\"","lists.ozlabs.org;\n dmarc=fail (p=none dis=none) header.from=infradead.org","lists.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=infradead.org\n (client-ip=2001:8b0:10b:1236::1; helo=casper.infradead.org;\n envelope-from=willy@infradead.org; receiver=lists.ozlabs.org)"],"Received":["from lists.ozlabs.org (lists.ozlabs.org\n [IPv6:2404:9400:21b9:f100::1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5tvQ0XSXz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 22:36:16 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4g5tvG06xrz2xlL;\n\tThu, 30 Apr 2026 22:36:10 +1000 (AEST)","from casper.infradead.org (casper.infradead.org\n [IPv6:2001:8b0:10b:1236::1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4g5tv60fXyz2xPL\n\tfor <linuxppc-dev@lists.ozlabs.org>; Thu, 30 Apr 2026 22:35:59 +1000 (AEST)","from willy by casper.infradead.org with local (Exim 4.98.2 #2 (Red\n Hat Linux))\n\tid 1wIQc7-00000007Dpy-0PSw;\n\tThu, 30 Apr 2026 12:35:31 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1777552569;\n\tcv=none;\n b=RzxzvQDiVavbzrPqxa9A0sUuMCafMB++h2UpGNA9cbMbhfVJZngOBJ6NrnAD0XMv+OqAbTiYOlQkPUXkrJR8oQYazAz9N7QHYI+NKHRmyp/eF4p88s4GPH64LgYmtE1Abr6cG9skm5cswFOyx5FTKsaDGrUMOn1R3WM1yuBzudTM1rvOIsb+2i5BgUgeEmwLFKN+UlADRusJ5be86CxnHdUqVg53xy7Zm+dm+FOxfDtSb595l+O0PDoOeZYmdHmaCHCyGDyZMKsXoG71OTRTmI3QsSVfVQ1UBZALoY3qn2/ZkgDHUseumX3FTiIpS+DD1Mnud71oA4FtGKNcl2vH3g==","ARC-Message-Signature":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1777552569; c=relaxed/relaxed;\n\tbh=Z+Z3DKsnSFmL8ihuU1z6jpmoa/PGowkZGNbOeWbnqGA=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=LMC7Zav7U3cNo+zS3uPvHeorfKI+4Adjwc2lVeHqstydggyouLUarTQTT1EJ1/CtFpssuj/YRjj+iQeJ7En98GIKJzBe9iGBufLFcSi2aqljtVPqusbJMDXSBzYy6SIlClnH6oZLzojQyTap9vqS0roi3V2Xa3CucnIJvD81OPDBfST29/wjFgeUdLZDV02+kIxijWgGS2yk7sceZ52lP99osWGvhcWCBaq318qdDAGmRj15tcKvkJzTW13XDF91/s/SPI3/QN/1MLGJ/atXx+dpziNqzRcTiRP9vANvYcqe3lwcvgRIGyXnaG3fChLUOFC/umLo1NrVsE1BBjHSRQ==","ARC-Authentication-Results":"i=1; lists.ozlabs.org;\n dmarc=fail (p=none dis=none) header.from=infradead.org;\n spf=none (client-ip=2001:8b0:10b:1236::1; helo=casper.infradead.org;\n envelope-from=willy@infradead.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=infradead.org","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version:\n\tReferences:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:\n\tContent-Transfer-Encoding:Content-ID:Content-Description;\n\tbh=Z+Z3DKsnSFmL8ihuU1z6jpmoa/PGowkZGNbOeWbnqGA=; b=iAUflMNTY8s90bOygRPipE/x2+\n\t2rqGdbTRLii/gKwyDrwP3nkrR0VatKKYld/V/816iJ1P+tXhX+d+idNR+EHjQMboflVsiybW8W+j8\n\teYWs7JCkiHvjY2IB2zf7TqoA45+x4aQ6qJmQlmCWvqYPr8NfFayhBn2Yo/Fe4ZPpdXhwYsAJOnz9D\n\tfjrOixede6cq1gwHChteZEiQiJMRusCYSEQAeQfmUhSpF81serK2xu7B77/VvMp8ZkRnZOjTGarSl\n\tf2YwbxhX7fGYNMGzMT5rb3gdo1ooWSq/7jwDHw+A2onKlKlIcG5HcwM0Ymw87xAmNi9iGAAb7Q4sY\n\t9LSfVJFQ==;","Date":"Thu, 30 Apr 2026 13:35:30 +0100","From":"Matthew Wilcox <willy@infradead.org>","To":"\"Barry Song (Xiaomi)\" <baohua@kernel.org>","Cc":"akpm@linux-foundation.org, linux-mm@kvack.org, david@kernel.org,\n\tljs@kernel.org, liam@infradead.org, vbabka@kernel.org,\n\trppt@kernel.org, surenb@google.com, mhocko@suse.com, jack@suse.cz,\n\tpfalcato@suse.de, wanglian@kylinos.cn, chentao@kylinos.cn,\n\tlianux.mm@gmail.com, kunwu.chan@gmail.com, liyangouwen1@oppo.com,\n\tchrisl@kernel.org, kasong@tencent.com, shikemeng@huaweicloud.com,\n\tnphamcs@gmail.com, bhe@redhat.com, youngjun.park@lge.com,\n\tlinux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org,\n\tloongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org,\n\tlinux-riscv@lists.infradead.org, linux-s390@vger.kernel.org","Subject":"Re: [PATCH v2 4/5] mm: Don't retry page fault if folio is uptodate\n during swap-in","Message-ID":"<afNMkqwxC00OT134@casper.infradead.org>","References":"<20260430040427.4672-1-baohua@kernel.org>\n <20260430040427.4672-5-baohua@kernel.org>","X-Mailing-List":"linuxppc-dev@lists.ozlabs.org","List-Id":"<linuxppc-dev.lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev+help@lists.ozlabs.org>","List-Owner":"<mailto:linuxppc-dev+owner@lists.ozlabs.org>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Archive":"<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Subscribe":"<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>","List-Unsubscribe":"<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>","Precedence":"list","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260430040427.4672-5-baohua@kernel.org>","X-Spam-Status":"No, score=-2.5 required=3.0 tests=DKIM_SIGNED,DKIM_VALID,\n\tDKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE\n\tautolearn=disabled version=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"}},{"id":3685166,"web_url":"http://patchwork.ozlabs.org/comment/3685166/","msgid":"<afTQl12XcXVnku9J@casper.infradead.org>","date":"2026-05-01T16:11:03","subject":"Re: [PATCH v2 4/5] mm: Don't retry page fault if folio is uptodate\n during swap-in","submitter":{"id":70855,"url":"http://patchwork.ozlabs.org/api/people/70855/","name":"Matthew Wilcox","email":"willy@infradead.org"},"content":"On Thu, Apr 30, 2026 at 01:35:30PM +0100, Matthew Wilcox wrote:\n> On Thu, Apr 30, 2026 at 12:04:26PM +0800, Barry Song (Xiaomi) wrote:\n> > If we are waiting for long I/O to complete, it makes sense to\n> > avoid holding locks for too long. However, if the folio is\n> > uptodate, we are likely only waiting for a concurrent PTE\n> > update to finish. Retrying the entire page fault seems\n> > excessive.\n> \n> I think the idea is good, but the implementation is misplaced.\n> The check for folio_uptodate() should be inside folio_lock_or_retry()\n> rather than tampering with FAULT_FLAG_ALLOW_RETRY in its caller.\n\nActually it needs to be a little more complex than this.  We\nsometimes wait for writeback while holding the folio lock, and\nthat's a similar latency to reads (or with cheap NAND, maybe longer!)\n\nSo I think the test needs to be:\n\n\tif (folio_test_uptodate(folio) && !folio_test_writeback(folio))","headers":{"Return-Path":"\n <linuxppc-dev+bounces-20370-incoming=patchwork.ozlabs.org@lists.ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=S+PrOaTu;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-20370-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2001:8b0:10b:1236::1\"","lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=infradead.org","lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=S+PrOaTu;\n\tdkim-atps=neutral","lists.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=infradead.org\n (client-ip=2001:8b0:10b:1236::1; helo=casper.infradead.org;\n envelope-from=willy@infradead.org; receiver=lists.ozlabs.org)"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6bd82Kgcz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 02:11:23 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4g6bd66b28z2xnZ;\n\tSat, 02 May 2026 02:11:22 +1000 (AEST)","from casper.infradead.org (casper.infradead.org\n [IPv6:2001:8b0:10b:1236::1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4g6bd56PnXz2xBb\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sat, 02 May 2026 02:11:21 +1000 (AEST)","from willy by casper.infradead.org with local (Exim 4.98.2 #2 (Red\n Hat Linux))\n\tid 1wIqSF-000000091b3-3rae;\n\tFri, 01 May 2026 16:11:03 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1777651882;\n\tcv=none;\n b=HAzcQTLqy9RlPPevOOACVHDDvc6zhaQC6XWGqGIcT5svLcYkPxa5BhS/spLaNPCGutQ6Y9hWt8blMf59TTzKY056LyMddItp02VYvlUNMpfhO5loOe54Yy9yKFf1Q/ZZUkqWlUcwba0ds+968PiS9uBsM7/m1qyuOt3A+uA3t7yGebmWKVU+0m7FOJX4pGwWgK8wQ7ZF7W4HwMG434A8wH3whLuqQu0EFczqrJYqG6tjRgh0QLir4irrrLfXeJGiGj0HWqjkW+I3i+5/So/249BLz76T67eETWaUp/0Tq1SQhoEUwwgKmwcz8yWS+jD5JU5yWAGsFfpidOzTO71QOw==","ARC-Message-Signature":"i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1777651882; c=relaxed/relaxed;\n\tbh=+CybRlbN4CxbIfeNSZrydRrLn1TjflMMzYAXjMcpWY4=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=GW/M3EQgnis0t80g71rl3C9WcjMkaplYkcwkPKfzONJ+M8weBC+w0SBFFDu0JyHqiswnUNrdPnWVsFdsxLwUSIo7bdmPNco663stFKNPrfylOFwFWPWlAjpi06ZHDlOMaXy2dCivvRAiyCZmmAwJLOXdO41NW4u+qBfOBomBu7YbmMUcEN+3hxuuot3T+olbYxsy9ZH7EIiz06hg2hCDWH+VFzGn6bMzHJg+oyVkSOwNnqAcSu2HB59YdLPpSv1tYdd9lcX7u0Hqw46AGo/xkSeS/d3sktvhU23lJt2/JIyM8MPCxKgCyi6f2ItNYX87LxhnJ/YYg9FpkPru9XNKAQ==","ARC-Authentication-Results":"i=1; lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=infradead.org;\n dkim=pass (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=S+PrOaTu; dkim-atps=neutral;\n spf=none (client-ip=2001:8b0:10b:1236::1; helo=casper.infradead.org;\n envelope-from=willy@infradead.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=infradead.org","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version:\n\tReferences:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:\n\tContent-Transfer-Encoding:Content-ID:Content-Description;\n\tbh=+CybRlbN4CxbIfeNSZrydRrLn1TjflMMzYAXjMcpWY4=; b=S+PrOaTuYpMS9yVFL/SRQq4G+T\n\tEDyv1/76Ou/0SIA3LL0ouPq9EWPMO5l4Z+1N0ptLnqAYO0BqCC4Xm3PO+wTeHKuBAB3IahTX8uA6n\n\ta7trLSaMY2QWSwvrG+FRQkKWQ18oVU4G7Xnue+id4br5moG5PbXCSji7QEubPHOv5XAVHxDx6zgXt\n\twJ7FY6JrVfHfYKvW2+QN3fwPrQPGIgx3RMlpFCjGDCQcXCHPoN+y5K0Lw5lnU6sBd7VbJb/qhMWfh\n\tUTsBtEsZO5IdNigyrAUUvt2/YmNpV3JbBPOkDvUuz1JBSyohrXzO8wluq9Nh5ga/qGIKeRzyOIxxx\n\t5YZRXdig==;","Date":"Fri, 1 May 2026 17:11:03 +0100","From":"Matthew Wilcox <willy@infradead.org>","To":"\"Barry Song (Xiaomi)\" <baohua@kernel.org>","Cc":"akpm@linux-foundation.org, linux-mm@kvack.org, david@kernel.org,\n\tljs@kernel.org, liam@infradead.org, vbabka@kernel.org,\n\trppt@kernel.org, surenb@google.com, mhocko@suse.com, jack@suse.cz,\n\tpfalcato@suse.de, wanglian@kylinos.cn, chentao@kylinos.cn,\n\tlianux.mm@gmail.com, kunwu.chan@gmail.com, liyangouwen1@oppo.com,\n\tchrisl@kernel.org, kasong@tencent.com, shikemeng@huaweicloud.com,\n\tnphamcs@gmail.com, bhe@redhat.com, youngjun.park@lge.com,\n\tlinux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org,\n\tloongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org,\n\tlinux-riscv@lists.infradead.org, linux-s390@vger.kernel.org","Subject":"Re: [PATCH v2 4/5] mm: Don't retry page fault if folio is uptodate\n during swap-in","Message-ID":"<afTQl12XcXVnku9J@casper.infradead.org>","References":"<20260430040427.4672-1-baohua@kernel.org>\n <20260430040427.4672-5-baohua@kernel.org>\n <afNMkqwxC00OT134@casper.infradead.org>","X-Mailing-List":"linuxppc-dev@lists.ozlabs.org","List-Id":"<linuxppc-dev.lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev+help@lists.ozlabs.org>","List-Owner":"<mailto:linuxppc-dev+owner@lists.ozlabs.org>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Archive":"<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Subscribe":"<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>","List-Unsubscribe":"<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>","Precedence":"list","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<afNMkqwxC00OT134@casper.infradead.org>","X-Spam-Status":"No, score=-2.5 required=3.0 tests=DKIM_SIGNED,DKIM_VALID,\n\tDKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE\n\tautolearn=disabled version=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"}}]