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 30CD9C021B8 for ; Wed, 26 Feb 2025 14:04:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A94B228000F; Wed, 26 Feb 2025 09:04:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A443828000E; Wed, 26 Feb 2025 09:04:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 90BF028000F; Wed, 26 Feb 2025 09:04:14 -0500 (EST) 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 740D728000E for ; Wed, 26 Feb 2025 09:04:14 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 4223C1A15ED for ; Wed, 26 Feb 2025 14:04:11 +0000 (UTC) X-FDA: 83162265102.29.3AD4EE5 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf29.hostedemail.com (Postfix) with ESMTP id 43D1B120024 for ; Wed, 26 Feb 2025 14:04:07 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ZwWSHfRK; spf=none (imf29.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=1740578649; 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=3zH5voWFtLFeB3u4kEV7l7Vgk1NEa2IbTHLhLzVHJrE=; b=ruHoAQf3hinkTKtvLV9++HmEe7P9Dn0GdqUuG8Dluacr3WCBJlVEX3fc0t4Emb23IZlwTe dq8Vv/FbEpwj0V1NGj/r/NYu4NqSVMEO5fg+N7sI4QWZxr3jN08cfkQPouu4lr/n9jbo/7 VmqkWswB5W59QmiE3euCzsiPbjBCI4c= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ZwWSHfRK; spf=none (imf29.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=1740578649; a=rsa-sha256; cv=none; b=lYynESDcYO+3LeLAV+ZS0l0ywE4a0kC68vgTSnXR+ndTX/1eUwFPf7aLVmRECrRzLtbyLe VJH+OyVLPckthkfZXwKImUfkTGWQZ0M35kanBkJrElmWgw8QCXwJXghaJMZY02Qta5KdjN mWliC3C25nEFg7GV8weHdqgQZuIYUUQ= 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=3zH5voWFtLFeB3u4kEV7l7Vgk1NEa2IbTHLhLzVHJrE=; b=ZwWSHfRKbiUZ4ClfJC5LJAjtlQ 5c7nXrVxB0QPtzE16QHRq0qtgTN7eezNu82yIzT8MxlI2Y/D6r/1Lp6j1uEqFHB6J62ywKMIcppPa wvB3xGuNa4pqYeirPGvhmBSraqwQZtwWJFo+rIZpvicM9FzBWn2HZz2FRHNF7REhUKySf1Az7tn31 wGS7S4O+zO5tXDyKDSQMlzzgxE6P5r6QPgqVGmKPyf4DEObJ3CCPh0s3mfPDFmGRBtfeMvKVII4ke CwjOfXNqwYZvSzp1JrF9He7nT9LHctkJcBG27kHtMkCmRcBW6Xj3UBKZRqDf+FgMQDJ5lOXHvoejM E47B2vAA==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tnI11-0000000FXTY-40ye; Wed, 26 Feb 2025 14:04:00 +0000 Date: Wed, 26 Feb 2025 14:03:59 +0000 From: Matthew Wilcox To: Brian Geffon Cc: Andrew Morton , Zi Yan , Kefeng Wang , Suren Baghdasaryan , linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Baolin Wang , Hugh Dickins , Marek Maslanka Subject: Re: [PATCH] mm: fix finish_fault() handling for large folios Message-ID: References: <20250226114815.758217-1-bgeffon@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250226114815.758217-1-bgeffon@google.com> X-Rspamd-Queue-Id: 43D1B120024 X-Stat-Signature: w8x3wqw8fd9dsx571swx8t75oq9kxmk4 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740578647-261452 X-HE-Meta: U2FsdGVkX18rLKkKD71poVdsYEhiY7ASEfbGU9ufEmUjoktN8pg8b9nimG1TBmz1X3rsRIVniCzcNFSQzn7+hrH6y54s3dyx99F+z5jYKnkFjyEj0XevJcZKGVP8NOhplImu7/FlD6ZzqMa3iNixK7Lq22etAxdcuMJrqjGs32SzZU3BuB7o/TsjwPrRsn0ubY0O5/coOHGl2cKqZ7OGOOKpPpqIhcpTUdR7BZJFiCRgScnELVaSDxAhNO7n0CC4wu53oW1DA3bkmOcYE9+SZzIqOVnEH9UuUht1F0yE1pOBDNW2KJod2oAOdxeiog0fZ5C9YmUptkKfVMrtRUMBrz6cSqPE5TDOjc5pOdPSUWT47fBTLCL+PNgBXvhgjvevEjel0Gad3EVh24/gb8R5EHeAMwiZWbrfH76hVeqhHNK2ctPS2/HObj8efmE+Nb31mLuLQ4cs2eaAX97WS5WFkn2aW+xPSf6mcDRN+wHBNSIdeBlaz+v0xXCqewa4Y+8EEaTmN6xdHyoOizr+/sjlZKMCO6Pz1zpt7R4B+HnnzvmbqOZcay8qlNHUyX/H0K1s61EG6cOLERY5qPpWnIqUVAzrgZim9yReAL6rKMo9keYhxUblN+pOIh2aTNkNLJHGNJqdVw73mcOc4kNe2tSy8wSvM+rqFFwxKphZBwtKXcLfPsfgwOkg11C0tUKWSCDDsxZRDGK3By+XkNd0ITrBF18u+4vw4o5fPDJhdZrNGpWw6atdL6Wd6jJgVrb72V5D+AL3oPko5vCNiR9Jvqlcc5XGxo4CX2E4h4/KYq3hTTH7k/uSmFFzeArM0wL/cc+qtW7h5M3KliHs1DydBOu890QUSMRs8JGblysSKgopfEExOkJ+SazBFhlNQBwUpU41ZRRTs2HK1QrO0rJegLc4CHheHU3U0RMo1qjx2hs9MkmKRGxZyPVB2Z/6cMtsmh6lg7Wx6nBY1lSp7j949IL Aad09pkO hKjJelrf2jPYU7RvT1zX+QdGercQ2XXxvVgilGrsjTNd3g/AQWf80c4rC69cyjAl+RGL5zqTMrn/Y0cFd7sQNcSx0LyDZtV0HUwvxhpvk2hfB3Swh4HnNiNrfcfq9gcf0ikHXjfR2Ib2pR3T5EpeSxWqdh8CWGQdZgo8nJFR2vPcXv94ReUdS92DiDBJcILMil4ZGs0KZNkNTz6tdcYPh00wzTQ8ZToH/VsbZtlfjWTRk2zbKcRcqhPEVk9TRSloE7XUWeh7wQWXNii0zsdcDWZhdDZONKrcJbuIIS1dF/oFaSzJLRV+7Q54wWKcLPEho4Tf/j/x5LxZw9fE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000066, 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 Wed, Feb 26, 2025 at 06:48:15AM -0500, Brian Geffon wrote: > When handling faults for anon shmem finish_fault() will attempt to install > ptes for the entire folio. Unfortunately if it encounters a single > non-pte_none entry in that range it will bail, even if the pte that > triggered the fault is still pte_none. When this situation happens the > fault will be retried endlessly never making forward progress. > > This patch fixes this behavior and if it detects that a pte in the range > is not pte_none it will fall back to setting just the pte for the > address that triggered the fault. Surely there's a similar problem in do_anonymous_page()? At any rate, what a horrid function finish_fault() has become. Special cases all over the place. What we should be doing is deciding the range of PTEs to insert, bounded by the folio, the VMA and any non-none entries. Maybe I'll get a chance to fix this up.