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 4FCF1C54E67 for ; Tue, 26 Mar 2024 20:28:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DA7006B0089; Tue, 26 Mar 2024 16:28:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D572B6B0093; Tue, 26 Mar 2024 16:28:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C45696B0095; Tue, 26 Mar 2024 16:28:39 -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 B34836B0089 for ; Tue, 26 Mar 2024 16:28:39 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7C38080472 for ; Tue, 26 Mar 2024 20:28:39 +0000 (UTC) X-FDA: 81940328358.04.F8B763B Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf11.hostedemail.com (Postfix) with ESMTP id D58F240011 for ; Tue, 26 Mar 2024 20:28:37 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="vYkf3/Ev"; dmarc=none; spf=none (imf11.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=1711484918; 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=Fk/PBeTwF3EdydrfntGNeSILbnkq3z7D7Gx9zai2XuQ=; b=lJiJ4MAy6sUPPNWZgpRx93i89yMm9mp0qHQF1FgxCYFqXkXZ/jV/1CRst748r1wKyP10Kp lcqhO+YYUqsIu55Fj8qOVrzgI+6MUPwqOabWX+vM7FzGCe6THGhSkCiWFPVLyF1AHCDwFr 8Zgha6zk2GYoPO2Y6yHnAq+d7jMiEc0= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="vYkf3/Ev"; dmarc=none; spf=none (imf11.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=1711484918; a=rsa-sha256; cv=none; b=HOdkCD41n8xz4paEVvGV1fRlT0ZhBslplICLYyk0PEtadO0CttuH0mi9ab9OgjfaRaUBJ5 I5kSK/W4xx5V6uPQ6Z+TNsb9yOYP8MHF+P7QCc9fIqJ3TZwiLb9H1tUv+sL6cUSyJsuDIw 3eg2+SuJOsFXiW8Aj/Og3XRcnNJXEk8= 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=Fk/PBeTwF3EdydrfntGNeSILbnkq3z7D7Gx9zai2XuQ=; b=vYkf3/EvK6jT6LVS2H5DMniySH VVyyFJrN+99AqItf5QcWoI+UovVDIOl/DMDbH0zASNYm4RnlWe5gR3Nv2SknRhUZkeB0ObAIdF/yX ac1ybl2KG58aKlM1yDag3/CO2X198uhBj4NWcAJyzKZfbNu6nH8vKlC5EsDd8O3QyxJh80o3O6UFe lD0vz6Vtu0pi8WYUd1H5OsV9JiZmBbEHCKqb70nRhqa8cx6J7G67iiegfkJ3dM3OGi4KdXoOaHNfG MRgSbuuWCCKWUkJgasH6buy4knv3x3DpaXmj84ygqyEDWs1RfX1520635fXf4g47Hs4v6LtC0mqzu /F45iItQ==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpDPQ-00000002CGR-2UDq; Tue, 26 Mar 2024 20:28:36 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Subject: [PATCH 3/8] mm: Add pmd_folio() Date: Tue, 26 Mar 2024 20:28:23 +0000 Message-ID: <20240326202833.523759-4-willy@infradead.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240326202833.523759-1-willy@infradead.org> References: <20240326202833.523759-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D58F240011 X-Stat-Signature: edhffci4b7y4pdopgd47f38cyk6651wz X-HE-Tag: 1711484917-727475 X-HE-Meta: U2FsdGVkX19XQtPdsZDsQDYxaqMkzTJIpY0d6vFBkp9LyPCPhRL80OJkB2lq6g1wfOE/CDNKMnuH+cJat8HeQSjw1jymohYqnCBCjIdn8ikZqRKfcYXXH5BmhqUfpJm0kFSxXtCrfYNLYBbwzPkM5FQ60+ZdozSVoXEmWh+4460KCQhzOnQN7Xz8E3kTWkynbW/EeeTXNX3iEYtUSyRawteo2tekKBzQFCUdqilkRYPlYosXvUKcbBNpZ+byNfeDd69jdhYNhaKl5kDpZBBvvHPJWBfVGsm0W1OI+zB0TOyebOQVyDUo0ii1P8YQicF3Md42pqKeb+O+uTKCpibcPJMdQ9McxGtMUYLO+9AN6Wmv6N0CSPb1lK+JgVTJP1p5WQdQi4X2h++sdCVkONvfskfkL5KQcs+4kg/wGzjDERjtF12QTaJe168+dHnwKAjBfGgS/Df1vlef/nZlGXmLRbiF4O6JnUAUtWfIpVDHMrrsQank872wbny1lFh69p/JblqEInqPe6F44ZsuUPcH4w3yeRAd7d22DpUeyFLe+cjkVhalOhv6WXzuYuIg/5wdkMukM1wPlkWQnxz5lNLqWxMTFaXErZjUwffq+i3tpnHlGsPZmtZrTMo3ATxt6TwmDQnlj5OcOdHxpN+5+9eGhM10q/Q5ZU36J1jNSbW/XLDUgXxcMOzPJi+hBkTW83aJuefVEDahgTncrhPkOYTSTb+vwGqQyYNZ5ouHtGicbYktQXw7ppXP1aWDQLqoApA7C2T7M0lguRUPJ1VenWv7CZ4s6ghAK8gQgdyEubCFO4rRWTjFZtVCyrFgivWLOqQOq5g3NsKiYh+Twv4SpYqqGyXvdk2RA2g5JiTo1AjqLePsUGqTn0G39+D7okLaogyWEeP/Xfof3EuKAFuZa7/CJnrMEkivuqeP 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: Convert directly from a pmd to a folio without going through another representation first. For now this is just a slightly shorter way to write it, but it might end up being more efficient later. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/pgtable.h | 2 ++ mm/huge_memory.c | 6 +++--- mm/madvise.c | 2 +- mm/mempolicy.c | 2 +- mm/mlock.c | 2 +- mm/userfaultfd.c | 2 +- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index 600e17d03659..09c85c7bf9c2 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -50,6 +50,8 @@ #define pmd_pgtable(pmd) pmd_page(pmd) #endif +#define pmd_folio(pmd) page_folio(pmd_page(pmd)) + /* * A page table page can be thought of an array like this: pXd_t[PTRS_PER_PxD] * diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 78f9132daa52..8ee09bfdfdb7 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1816,7 +1816,7 @@ bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, goto out; } - folio = pfn_folio(pmd_pfn(orig_pmd)); + folio = pmd_folio(orig_pmd); /* * If other processes are mapping this folio, we couldn't discard * the folio unless they all do MADV_FREE so let's skip the folio. @@ -2086,7 +2086,7 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, if (pmd_protnone(*pmd)) goto unlock; - folio = page_folio(pmd_page(*pmd)); + folio = pmd_folio(*pmd); toptier = node_is_toptier(folio_nid(folio)); /* * Skip scanning top tier node if normal numa @@ -2663,7 +2663,7 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, * It's safe to call pmd_page when folio is set because it's * guaranteed that pmd is present. */ - if (folio && folio != page_folio(pmd_page(*pmd))) + if (folio && folio != pmd_folio(*pmd)) goto out; __split_huge_pmd_locked(vma, pmd, range.start, freeze); } diff --git a/mm/madvise.c b/mm/madvise.c index 7625830d6ae9..1f77a51baaac 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -363,7 +363,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, goto huge_unlock; } - folio = pfn_folio(pmd_pfn(orig_pmd)); + folio = pmd_folio(orig_pmd); /* Do not interfere with other mappings of this folio */ if (folio_likely_mapped_shared(folio)) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 6e7069ecf713..4f5d0923af8f 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -509,7 +509,7 @@ static void queue_folios_pmd(pmd_t *pmd, struct mm_walk *walk) qp->nr_failed++; return; } - folio = pfn_folio(pmd_pfn(*pmd)); + folio = pmd_folio(*pmd); if (is_huge_zero_folio(folio)) { walk->action = ACTION_CONTINUE; return; diff --git a/mm/mlock.c b/mm/mlock.c index 1ed2f2ab37cd..30b51cdea89d 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -378,7 +378,7 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr, goto out; if (is_huge_zero_pmd(*pmd)) goto out; - folio = page_folio(pmd_page(*pmd)); + folio = pmd_folio(*pmd); if (vma->vm_flags & VM_LOCKED) mlock_folio(folio); else diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index 4f1a392fe84f..f6267afe65d1 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -1697,7 +1697,7 @@ ssize_t move_pages(struct userfaultfd_ctx *ctx, unsigned long dst_start, /* Check if we can move the pmd without splitting it. */ if (move_splits_huge_pmd(dst_addr, src_addr, src_start + len) || !pmd_none(dst_pmdval)) { - struct folio *folio = pfn_folio(pmd_pfn(*src_pmd)); + struct folio *folio = pmd_folio(*src_pmd); if (!folio || (!is_huge_zero_folio(folio) && !PageAnonExclusive(&folio->page))) { -- 2.43.0