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 C2482C77B72 for ; Fri, 14 Apr 2023 18:43:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3CBB96B0072; Fri, 14 Apr 2023 14:43:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 37BE66B0075; Fri, 14 Apr 2023 14:43:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 26A786B0078; Fri, 14 Apr 2023 14:43:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 174EB6B0072 for ; Fri, 14 Apr 2023 14:43:22 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id DD7EAA029A for ; Fri, 14 Apr 2023 18:43:21 +0000 (UTC) X-FDA: 80680869402.26.955A26E Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf26.hostedemail.com (Postfix) with ESMTP id D0D21140012 for ; Fri, 14 Apr 2023 18:43:19 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="Sd/cxbIk"; 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=1681497800; 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=p26dZK3pH6VmE9TncnwVN82emLjrvNPhwxTiscJM8dU=; b=gzTuNhYgaIkE0yENH4lPY5e5D4DgDyDM2Rluq7x7LkGzHqqTNvqUxC69vUzVbahAIdsrgK QaU/8Xj2wC13tqdv2WunaRYkjV87n1J55ZDxVLK/s1qRbfbzo6KNCyeMeQ3D0euOEL6lye fxwmNG4Ml+HQk81ZrgqT3dhSd7VL9wc= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="Sd/cxbIk"; 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=1681497800; a=rsa-sha256; cv=none; b=AymEmFu6GDKplpGsWfMO2vzscbi7CZ2ncODhRdnIFUEmF/x3Rl9T+/hOcbZfd8FyIlBpEi WvTl3UebvAqqe40Dkm1/if4KxEbD6VcBvTmTvTRig6B0UCoux7BdygpLXl3EYt0I5vGSnx uqqAlC1kFjl9c2lLqiSYUjKaC7HQkDU= 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=p26dZK3pH6VmE9TncnwVN82emLjrvNPhwxTiscJM8dU=; b=Sd/cxbIkTSLPdPrOyKbZZr25Yk YwccLPev/kvz0gp5GFwNUnfgXp+fhJlhYTVZKK0P5sYL8xyjHsX/RAGiviCKwy3eFnojOgRE93pRj wjBET4Nv4ldXh/xNykeV3Re6au6xejXVhuYQxtwkT5EXoTUjR0wY0b/dHfOLWyoDn9FbIaOgIvFka 66lHXnuIx3gtHO5BGyjEHbIlRTA3+snpRomlp1zSShbh308va4EmMNd/bkQZcl+apjOwmr42zNbTd nds1ibzn7oxYqmdROUjK9Q04q2ogcBBtIii1R7kYe06diNa7TBjT4YjR0aM09KznpCUK5flSECDBv NOzAcIbA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pnONy-008zEZ-0z; Fri, 14 Apr 2023 18:43:02 +0000 Date: Fri, 14 Apr 2023 19:43:01 +0100 From: Matthew Wilcox To: Suren Baghdasaryan Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, mhocko@suse.com, josef@toxicpanda.com, jack@suse.cz, ldufour@linux.ibm.com, laurent.dufour@fr.ibm.com, michel@lespinasse.org, liam.howlett@oracle.com, jglisse@google.com, vbabka@suse.cz, minchan@google.com, dave@stgolabs.net, punit.agrawal@bytedance.com, lstoakes@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@android.com Subject: Re: [PATCH 1/1] mm: handle swap page faults if the faulting page can be locked Message-ID: References: <20230414180043.1839745-1-surenb@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230414180043.1839745-1-surenb@google.com> X-Stat-Signature: 3irwthg6a9zyaqhq5fgfxzb3afy84cry X-Rspam-User: X-Rspamd-Queue-Id: D0D21140012 X-Rspamd-Server: rspam06 X-HE-Tag: 1681497799-281121 X-HE-Meta: U2FsdGVkX18jP+FQqB1DDyrwmGka1574rN1DFs28PV/z1vFcXSJV2a3X1f9NtO4Tp5YjuqwYqpLVHpfY+8lO/1tdkrPtQbYF1pTQUMXYTfhkRBXNGpwIt5SPSEeO3y+2LUE0eZ6TcAdVWw3b+rHlB7+kfDRQ7SSVCV3y3OUIokWATsAZgUwHMNNn8ALFzpYMijgVaoPstJYw4nYLxpi88lyUwyS4MNHjMWjx0yFoZ8p8uifcf4GMyiQaWFkKirU+76jWW7AJZuxmq+34JMiwaEU4H/vt1moe8gP2vD2ki1VDedJ5eSZrNRO982riMrxKTRMGdlWWdkXsw93hRe1ywCUiZB/xLVoEePqNt/WXKEP6CBTS2+aqgYzGsO4jt/ocGo18Svykk6AQm9x3BhZo0rFubDNz9B0whOCQgY0ftx4SmU3ZMJzSIIa1j5+daZYuknml60G5cFq9wzeSrfFkd1+p+baUgTjoVZDyY9uwbnT28DMGj181kTrajTsq8Y9dEGDszRHQopHSwVWqdL6WpZxFWTsM+1MiCdgCCBWt3H0gnXXh6D+tmpbW6FERqC4hkRBYpNm/Di5+vopirjNwC9cX897Bgk96ALn9gs3uEPFFndJvR8/tyjznZWn386eVyOm6SQ0gx8rrauBE5aPsT1IhwodHB8w5YrVtemubUHFQtmdMkdzsqf3Kr/O8HLYbB5+zlN3vka2FIkaI4r6QVK7269aXumo1pSvHUPZsgL1Xqpnd/b4oCeYRSFGsbdGO5KB38V4ds3QuNj21fjrYF0DtUCmjA2aHF24VYjKWiPNe2I9UaAOlRPtwLHSqfl/VKsg1jPlTwbyzIEsJ8uLlFP35EIj0O6EvjGwHo7c9h/4znAY05/ShsCDdtSO4AHP0YUI++N7Ae8z9HWWttev1KbIpDMdofX3135SkKyGNCUn9iDpvxlONPiYyna7ApCRCKvmjeTt/DiOxRvlnJbL ITX6d9sy wDHRlkmSta+ZJnHOmFyerE+NbICtn0tutYpDg9R5LX0JXLsg8GWubbSAab5xSpMhVnXgxDhmJ7howYMO0wIbVZ8YDTemM5gEP8q2UuEoCgmd/S3Zk/W1ScxgjbTxhai/qUwlRwCI0jKI8DAf3iJPSL1fzUf8zoHUKBOhLalgO15p7aBt27waHwZY8ggj2xtg7q1D6Hj1LnaA/rRr/79snMtbAnQ== 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 Fri, Apr 14, 2023 at 11:00:43AM -0700, Suren Baghdasaryan wrote: > When page fault is handled under VMA lock protection, all swap page > faults are retried with mmap_lock because folio_lock_or_retry > implementation has to drop and reacquire mmap_lock if folio could > not be immediately locked. > Instead of retrying all swapped page faults, retry only when folio > locking fails. Reviewed-by: Matthew Wilcox (Oracle) Let's just review what can now be handled under the VMA lock instead of the mmap_lock, in case somebody knows better than me that it's not safe. - We can call migration_entry_wait(). This will wait for PG_locked to become clear (in migration_entry_wait_on_locked()). As previously discussed offline, I think this is safe to do while holding the VMA locked. - We can call remove_device_exclusive_entry(). That calls folio_lock_or_retry(), which will fail if it can't get the VMA lock. - We can call pgmap->ops->migrate_to_ram(). Perhaps somebody familiar with Nouveau and amdkfd could comment on how safe this is? - I believe we can't call handle_pte_marker() because we exclude UFFD VMAs earlier. - We can call swap_readpage() if we allocate a new folio. I haven't traced through all this code to tell if it's OK. So ... I believe this is all OK, but we're definitely now willing to wait for I/O from the swap device while holding the VMA lock when we weren't before. And maybe we should make a bigger deal of it in the changelog. And maybe we shouldn't just be failing the folio_lock_or_retry(), maybe we should be waiting for the folio lock with the VMA locked.