From patchwork Thu Jan 11 15:24:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13517538 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 898CEC47077 for ; Thu, 11 Jan 2024 15:24:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CA6BB6B0093; Thu, 11 Jan 2024 10:24:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C3E0F6B0095; Thu, 11 Jan 2024 10:24:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A80F66B0096; Thu, 11 Jan 2024 10:24:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 991EF6B0093 for ; Thu, 11 Jan 2024 10:24:45 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 593C2A227D for ; Thu, 11 Jan 2024 15:24:45 +0000 (UTC) X-FDA: 81667402530.02.4F43731 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf04.hostedemail.com (Postfix) with ESMTP id 8880840020 for ; Thu, 11 Jan 2024 15:24:43 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=QVcPzKV1; dmarc=none; spf=none (imf04.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704986683; a=rsa-sha256; cv=none; b=5iyFABH+Ly+pvzqCdYf0YdfFdl/rkDukoHXndT5/QrpTHUGTETdWl7Nu5Bd8ZuE9eJUVrD 2w6d1NvE8yjrVf05LWtHiOUh6Iuqla791Gdq6uP+JrvWsTeIbSIG2lJ11JtU3FTHBZCSML RaNLGxIW/H/S/QRyiez6uWBfwtgM7ho= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=QVcPzKV1; dmarc=none; spf=none (imf04.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704986683; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SWPLe2lBFcOeS/R+eqUJaGE4qvmGFpI0sgm68JzAp2s=; b=6yKtyN/DW0FXb2k3U3vXaonC2umkoT8OAB5UnzVBK/DW0Jdio5UeKa2iowimBXeBd4vZQb GE1CNrd8p4PS04Idj/CoDvU41gsbmVeMGg+qFRdWu0Ebwc2cDx93Du7KZF6Bn4r04oV5O3 Y4hDjijP5WT9kO4VXnpSxPoChDCBqnU= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=SWPLe2lBFcOeS/R+eqUJaGE4qvmGFpI0sgm68JzAp2s=; b=QVcPzKV1YNnMfheJtChzwtL02f e1cC0RZvvMWJyb9EQAMOvxUDzRUQBNK5BJXla2PE1U1NLRw8rVNKwo77SOCCgrC1BJsUXABWJa4OB A0AvlidZpJNlFAHwwE0y83hZJQGO0OnYb8j1PpD3+BikP4MXlFPesDYOWP8IY7cTGJSdIdgEpjJ0m NAAPl2VFN/Dmamm2L6+UBRyzl9m6QJrpHjXKd2PezMG4OX+FDSZ2iesbd6gtdR3+A3cs5paiamyj6 9/nbsEftVAL2/O9HLGsXgU1IV2Y04oWOasB4jZcz/44drZ52o+zh6IyXUu0eAGIauRzNkDdKy8+Vr r6v/heSw==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1rNwv1-00E9sg-Aj; Thu, 11 Jan 2024 15:24:31 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, Kefeng Wang , david@redhat.com, linux-s390@vger.kernel.org Subject: [PATCH v3 01/10] mm: Add pfn_swap_entry_folio() Date: Thu, 11 Jan 2024 15:24:20 +0000 Message-Id: <20240111152429.3374566-2-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20240111152429.3374566-1-willy@infradead.org> References: <20240111152429.3374566-1-willy@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 8880840020 X-Stat-Signature: dhpi76xrszrk3amskku6ar5fh6cfufa8 X-HE-Tag: 1704986683-592531 X-HE-Meta: U2FsdGVkX1/REVbhHpcErPxbkXPwgInXN5PiwmTKxwtKWkOn8UFFvFfn0M5O46bRn0r9AI72yj+i3YFyltyCHaIj22gmCs2fhyWm312uHa0vyxJ8H8ZrjFdvdKUuXeV1Fhj2qbHlxTcKhYJLhRtjomPrUyGraoVQcvNco2JC8wlHPVQUEJEY5USMU9Z68V1gkiWwoQ5Cqmt5cXbpkftO7u+c9rFduKwFJU45MaQDk+QWpjquwDySFG8e/kL16/Q2LekqSul09EzLGDY8Am4wGbnDkNZAzPfD+EW7zor+yqVZ5oaJWiL0O6UBj/KSvo0KggMWseYq0ik/eRAcGmI2EACHve9w9bgzKXgFsOLYHHcOpl64zUq9ny2eo7TKH7j+ts8XWDWpOnDXTnuzwFmhrQlLpt7NpCCVjy3JDB+xJ8i36RTmuIP52LHE6/BA+toaLqoKhhhPF7LnFb2v+BG7ahi/zaMZqZzakHjEZQTfosMepiqjY6zDsfoUYQRH0T/m+k8GOAYogFp3C1NR1gL+J3DyXIjJ2hDEx1Whx0z+0koYmHQdKhViXJrcOaqJifW9h2nWoa/kcYo4JjdZjz1P8eyLQJmK2gw+Qo7D0AVUBA3A/RRUx1ya1OvEt3y4enAdf9kVq7RB1gOdE1VD3AdTJTvKG+218MgCMCJiu1+L0oSe9ekaKAf6dHNikfECVRvOGvThTwx77YRmFvBs6Z6PMOItto7lXVyfdqLuCElqJlYL3+zI4HtykUj9ovZGBJDQfxfM3Y08q4ivrc9ZeC4paQZNbN6kwHl0En3Mpi4Dg6in+xF8YCpzKM8rhLZG0KpRuIIEryyj2o3fMAnE+Xh0++o86DHkIM+TOe9U025AFQS4fIDanR0GczY1rKWd8vcN0CWIEm34l0XYrr53dN/2O/TMNGUTBAv60TshjDffs6oF0rIpgAX//qHegBUjasD/YO9hCyr1lN1JmhpqZ5C DkBuDxgo 1MDnqOqGGPCkw14UPYDbaZpCfO7Z/vd3tI1LJQI8L0JjMnOr3mBb4KaIcmeszH2+S7A4GIqEQQgOU/1CdubcjNSH441Fi7d6Ro1cQTYXTVNNS3Sxog88CdZVYfPpF5jhZA/Bse8GtZYA8oNYppO5TljzPscd8Ov+PKKtvEOZoMFv0ieCONp0MTqhvwSOK8mmFFe8UiqZOtwYb37XT5Nreelw1MFG83KZYtxWb 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: Thanks to the compound_head() hidden inside PageLocked(), this saves a call to compound_head() over calling page_folio(pfn_swap_entry_to_page()) Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/swapops.h | 13 +++++++++++++ mm/filemap.c | 2 +- mm/huge_memory.c | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/linux/swapops.h b/include/linux/swapops.h index bff1e8d97de0..48b700ba1d18 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -468,6 +468,19 @@ static inline struct page *pfn_swap_entry_to_page(swp_entry_t entry) return p; } +static inline struct folio *pfn_swap_entry_folio(swp_entry_t entry) +{ + struct folio *folio = pfn_folio(swp_offset_pfn(entry)); + + /* + * Any use of migration entries may only occur while the + * corresponding folio is locked + */ + BUG_ON(is_migration_entry(entry) && !folio_test_locked(folio)); + + return folio; +} + /* * A pfn swap entry is a special type of swap entry that always has a pfn stored * in the swap offset. They are used to represent unaddressable device memory diff --git a/mm/filemap.c b/mm/filemap.c index 750e779c23db..c704085f29b6 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1354,7 +1354,7 @@ void migration_entry_wait_on_locked(swp_entry_t entry, spinlock_t *ptl) unsigned long pflags; bool in_thrashing; wait_queue_head_t *q; - struct folio *folio = page_folio(pfn_swap_entry_to_page(entry)); + struct folio *folio = pfn_swap_entry_folio(entry); q = folio_waitqueue(folio); if (!folio_test_uptodate(folio) && folio_test_workingset(folio)) { diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 94ef5c02b459..5b2da360ae0c 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2035,7 +2035,7 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, #ifdef CONFIG_ARCH_ENABLE_THP_MIGRATION if (is_swap_pmd(*pmd)) { swp_entry_t entry = pmd_to_swp_entry(*pmd); - struct folio *folio = page_folio(pfn_swap_entry_to_page(entry)); + struct folio *folio = pfn_swap_entry_folio(entry); pmd_t newpmd; VM_BUG_ON(!is_pmd_migration_entry(*pmd));