From patchwork Fri Feb 21 14:30:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13985605 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 BD5F0C021B3 for ; Fri, 21 Feb 2025 14:31:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4A1CD280010; Fri, 21 Feb 2025 09:31:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4275628000A; Fri, 21 Feb 2025 09:31:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2A17828000D; Fri, 21 Feb 2025 09:31:10 -0500 (EST) 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 01106280004 for ; Fri, 21 Feb 2025 09:31:09 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id AE1B91C8096 for ; Fri, 21 Feb 2025 14:31:09 +0000 (UTC) X-FDA: 83144189058.30.E03DD31 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf18.hostedemail.com (Postfix) with ESMTP id A822C1C000C for ; Fri, 21 Feb 2025 14:31:07 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ZnB1aSDQ; spf=none (imf18.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=1740148268; a=rsa-sha256; cv=none; b=KocvWX+ch1XJvKJ56HuBLNM3vDHZgh/uo16jRYUnNA74FDkMQQ+7/+o5vMJdfc5R5/CajH NWG5kLvmYlUTKYPraia6anYhq6WXP9+Fwvqz9eLwFEpbY595voIXHGdqr5Cwdm5Llg322L 9xdu73z/+r4JaI9nhiO40OPOmAvrr30= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ZnB1aSDQ; spf=none (imf18.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=1740148268; 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=XKMSbfhgd9tyFb22pi+cXpiXpj+uKvA7iB0i1tzsnfw=; b=SlWsQu6WuWCD/6sGTcNym4GJ6uKwG2xLsL1/aP35RbD7dwtTXNGxLpc9wzvTnRVjUWyQIq 4wy07UoUUqrBRxgrkBIpynHohXRhPtmQkPZ8/+ZXMrd58cm5wwyIdKggPtHaRKQU27PzyI /scJgRojEknRHEtUWteWk+MD96iM0NA= 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=XKMSbfhgd9tyFb22pi+cXpiXpj+uKvA7iB0i1tzsnfw=; b=ZnB1aSDQ7lz9CwkFOiiDt/UFUh R0pN0AEcQbpca6QBXLKdttBqBpfCfyajGkqEuSClG51pfLqWl1mPDDkPytPV7eyU/TCZFdKO97Lc6 Ia3INzlHnxepnsXLkACLa13yE/7rwD8MbUezUpM4+HpAMY+mq/TN9pF0UPRNDM51VZ9jtMYjFn44U ciG5G+70OMqSc1WgYOLhvgCdXEMk2Nj7IZwK4D6LiIz5tURNX7eTgsR5zjhEsjwUA26OBJKePLj93 u84M0JUdUneIcVK6wwDtJTUUIvIomybhaIejLQNKpJc9rbdhpTm/g7Qlovtzdw1rZxNREtmfv8FCr IFRXJryg==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tlU3W-0000000DzWJ-1dVm; Fri, 21 Feb 2025 14:31:06 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , linux-arch@vger.kernel.org Subject: [PATCH 1/4] hugetlb: Simplify make_huge_pte() Date: Fri, 21 Feb 2025 14:30:58 +0000 Message-ID: <20250221143104.3334444-2-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221143104.3334444-1-willy@infradead.org> References: <20250221143104.3334444-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: 84u5mnp1hpyiqoatg7thti84xrsi3puj X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: A822C1C000C X-Rspam-User: X-HE-Tag: 1740148267-90507 X-HE-Meta: U2FsdGVkX18vNnhPcR9cm8OJ3bxuav6Hcw5jG7q6jLyiDYcRmQnnB0Q1WfPLim1nypdQfkiyJvmQDNh3X/GUAocetnXpn1df3s6n/TVwmRi7Ud+ikd6hWZgTdno/qv6wJaXr8I2fb4Ebe+QenBoXjYsL0f4gpSxk4BeYmhjJn9xQFoQgeDAT2loHkvhWyNluGt5V9FwDGfKpopUlUEBsCdBUB4hmmjStS8qymaCSshYTpLE9CuXqL9khD9+Wxvr9Typllr6gAfRji8u+ILaPK06Fj9vMsZB0NDmHruRUZGziYwrzpMMwHyDKXpqCBQbQbUWlcRs4xWNdoW8NRfwqbG1114LrNkqjq4xMU37g2WDyckbtOaRGSz1XBCetCGuQBsZdXllX9UUIFzPm0hgWJxtMstPrNhp0Hu0NJZWo3bKl2TRCz8VoFURIPrES3rqIhdvcrMGBgheNYdrpcBh9x8KH6FRxt4nMi2Mv/4OzoFSQ3+Nj6HKMqdFKwhFQcA8XyTG9CFt9Zp+wcW0bLHydRFnAnQ/Ym1OIGbf+c6La6UoIFxXOnl8InXBiZPCN4sq/3mCwiFArlSnq+KboMBO3xj8t8F331K+wKeSh6Z8RnqlDdahPM/Z4YMoBfKU6oojj2coEgXeHNQo0CDbvSozdbiMeXeH1TlpElCZKCys3HyVm659fLMKVQrTtaZ+kL5qFIXy1L5CNwV3PZokJV3Utq2wR6LLgYeIfElFvMRKtChmS5eowCB6/jMt/ZJ1qxfrxJW7T94SofHIdeDTQ7i6vDXXu0auaCGjq97gkBULKn1onuzkPH9uzT3/p8Vt4ZvjY5fFNfiOs6uUYOI4EV5/pZS3108Oi+k5F0N9xpneWhx99hMj7fkM9YwOEl9VW0H6dBpvpEJO3qPz4UJKn2YytBxlR8MB95MoPwArZmYzosm/WUzbxHcZEPGp0D3IjXNz2BnqgtvLoc7YUudIFqKa OFpTut+y dqKmh42NyJnOp1eSD9hVteiQ1dlK8tgDwHs3+Z47tzgJyyjy8YPJb2Kw+pr/Wv4LDSe+jXBLYdGYOmIt6xQB7aSUt+p7z6/rhgi3Ue/f2ZYxGE3uNJsECjEDtlCFf9lea0bACwKfSojSHZjRcJ4/kn48xAYtKfLEnp0kNFCXPngxl/yN7y3nvtSr+W/vfb4gLCEyyOFD2UkB2drWgLoDoU0MsDIjIMxk2a+09eRbV4LJgxAWwEVXspslnz5YXfzAEWHMLuEnkbEvYY/hFtWrxgtEatSQ8fqAxYM/l 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: mk_huge_pte() is a bad API. Despite its name, it creates a normal PTE which is later transformed into a huge PTE by arch_make_huge_pte(). So replace the page argument with a folio argument and call folio_mk_pte() instead. Then, because we now know this is a regular PTE rather than a huge one, use pte_mkdirty() instead of huge_pte_mkdirty() (and similar functions). Signed-off-by: Matthew Wilcox (Oracle) --- mm/hugetlb.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 163190e89ea1..1ea42dd01012 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5162,18 +5162,16 @@ const struct vm_operations_struct hugetlb_vm_ops = { .pagesize = hugetlb_vm_op_pagesize, }; -static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page, +static pte_t make_huge_pte(struct vm_area_struct *vma, struct folio *folio, bool try_mkwrite) { - pte_t entry; + pte_t entry = folio_mk_pte(folio, vma->vm_page_prot); unsigned int shift = huge_page_shift(hstate_vma(vma)); if (try_mkwrite && (vma->vm_flags & VM_WRITE)) { - entry = huge_pte_mkwrite(huge_pte_mkdirty(mk_huge_pte(page, - vma->vm_page_prot))); + entry = pte_mkwrite_novma(pte_mkdirty(entry)); } else { - entry = huge_pte_wrprotect(mk_huge_pte(page, - vma->vm_page_prot)); + entry = pte_wrprotect(entry); } entry = pte_mkyoung(entry); entry = arch_make_huge_pte(entry, shift, vma->vm_flags); @@ -5228,7 +5226,7 @@ static void hugetlb_install_folio(struct vm_area_struct *vma, pte_t *ptep, unsigned long addr, struct folio *new_folio, pte_t old, unsigned long sz) { - pte_t newpte = make_huge_pte(vma, &new_folio->page, true); + pte_t newpte = make_huge_pte(vma, new_folio, true); __folio_mark_uptodate(new_folio); hugetlb_add_new_anon_rmap(new_folio, vma, addr); @@ -5978,7 +5976,7 @@ static vm_fault_t hugetlb_wp(struct folio *pagecache_folio, spin_lock(vmf->ptl); vmf->pte = hugetlb_walk(vma, vmf->address, huge_page_size(h)); if (likely(vmf->pte && pte_same(huge_ptep_get(mm, vmf->address, vmf->pte), pte))) { - pte_t newpte = make_huge_pte(vma, &new_folio->page, !unshare); + pte_t newpte = make_huge_pte(vma, new_folio, !unshare); /* Break COW or unshare */ huge_ptep_clear_flush(vma, vmf->address, vmf->pte); @@ -6258,7 +6256,7 @@ static vm_fault_t hugetlb_no_page(struct address_space *mapping, hugetlb_add_new_anon_rmap(folio, vma, vmf->address); else hugetlb_add_file_rmap(folio); - new_pte = make_huge_pte(vma, &folio->page, vma->vm_flags & VM_SHARED); + new_pte = make_huge_pte(vma, folio, vma->vm_flags & VM_SHARED); /* * If this pte was previously wr-protected, keep it wr-protected even * if populated. @@ -6743,7 +6741,7 @@ int hugetlb_mfill_atomic_pte(pte_t *dst_pte, * For either: (1) CONTINUE on a non-shared VMA, or (2) UFFDIO_COPY * with wp flag set, don't set pte write bit. */ - _dst_pte = make_huge_pte(dst_vma, &folio->page, + _dst_pte = make_huge_pte(dst_vma, folio, !wp_enabled && !(is_continue && !vm_shared)); /* * Always mark UFFDIO_COPY page dirty; note that this may not be From patchwork Fri Feb 21 14:30:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13985607 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 D40D1C021B3 for ; Fri, 21 Feb 2025 14:31:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B08A028000A; Fri, 21 Feb 2025 09:31:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8258E28000F; Fri, 21 Feb 2025 09:31:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 49BE328000D; Fri, 21 Feb 2025 09:31:10 -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 0727728000B for ; Fri, 21 Feb 2025 09:31:09 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B34F9141274 for ; Fri, 21 Feb 2025 14:31:09 +0000 (UTC) X-FDA: 83144189058.25.0271478 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf27.hostedemail.com (Postfix) with ESMTP id 1BF814000D for ; Fri, 21 Feb 2025 14:31:07 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=o3UvakpE; spf=none (imf27.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=1740148268; 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=zdGcBGocRVUf83mumdTbIyeWsFhknXwHzV984ys0qcg=; b=P7DvnpE7F7jQIJH8b5uJnNQ9oZp0UdUnWn+FlO3DGZiu0YtTmqNKsmXjiX1ewyn4NjSdKa FbzgtiZBbOBru28nBNHLB70vgJsMeCfGQQBmTUXvMqbGFkLzsw5O5JTBeyxsoTfk5B4KQX P0VRe3FA67ggcxcD5c0QqnxxB9f8kKA= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=o3UvakpE; spf=none (imf27.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=1740148268; a=rsa-sha256; cv=none; b=OrxEhp9sgGqyKW7ptRTEEAGNL8eKJucrHLDkorrp+/WP0KK+KQowHEZ+1ptkHjzfjlGufM GA7t0WfLwDU9z2szkF43G+txEUGOgDMB9mGUXTThQnS6A+UCesd9TOQV0hNfB/ME6ju+mM e6PljsEtcpV0TLZaQ008rhNYetstTCs= 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=zdGcBGocRVUf83mumdTbIyeWsFhknXwHzV984ys0qcg=; b=o3UvakpEQP967j2RbIBr0H3+96 qPEz02hALIe/XHBzdPZ7ZRKN0v6N9Y/q6I5QG+AgfHJz9oqp8/07hRViCDTCmb0SdfjwDHphz7SMG 2QE5X4/BplHfWmHOtP3bRyN/txqRcNRH2iDGGxUIWjZEnrcAV4jYoC4650M/W3mU2QTKHNk7lawIQ 00hYVVLJjgd1wIBLBFysw2Z1xRy7Q1dJUKBbUylNfELY8/igAf+Sh7HkrJ+n9XaHWKnbHhe1NPv08 CpViN/SRZeLMTDrjMUwKwn5W5tTa/Yqun1xhEBybjIQAmMTz+tKx4raIW9pCNq2SQQpfKBbjKVa3p Et9b3KGQ==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tlU3W-0000000DzWS-2Drz; Fri, 21 Feb 2025 14:31:06 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , linux-arch@vger.kernel.org Subject: [PATCH 2/4] mm: Remove mk_huge_pte() Date: Fri, 21 Feb 2025 14:30:59 +0000 Message-ID: <20250221143104.3334444-3-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221143104.3334444-1-willy@infradead.org> References: <20250221143104.3334444-1-willy@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 1BF814000D X-Stat-Signature: zk4j9whxwgrnszebx6c35dp14e46e89p X-HE-Tag: 1740148267-550428 X-HE-Meta: U2FsdGVkX18LQG3ZFuCyHKvpS5YUoX3kXlVEAiH6PrfNLqza8qD9fuJR461GXqKGQls4BLaOJCZuHJhoX+ZK7OTKEPiorRUzMdhMZh4qKB1xErhgjUMa+Nfpc5p9pU5M5SBGb7vm5Bc6zLMzD8HEez7/h2apotma6nfEEVF7Tj5+LuDqpA3BQ7KaXzsLeEFIROw7UBZd+8ANCEKhwe1OyCxtTZ2oKKhGZz3tNdZ8mNS5KfXjmAo/Q+qATDIUDT87Ta+qd9gl+4D8GsFL78N3zJmj9u73e0nDhSIIdyEQxPvjDOVntYOZPVLxOXJ2xNBHCYaQ85WlmxthsDCAmyxHm5scZ+z3qldiAj85HK66YFMfxUsWpEPSV25i+4mvYVVtaUtX3IItqkB+Uc7Yi1FhAiPelv3fnFE71C7gKzpknbTzdoBmG8nExSRPy4IiYlRwOWAX8xugFIaKkiAeUT7sbUvZBWYWkI+yWOsjtOgCY0LLTDga/Vs95YU+59ppBeNqhgyLEUwz4TWBFLsoYFAZQ2DWrgF4tgkn18GjMkeSUjhMVGUpl2mnzdLDZboFTQrVtaytx7eCCjQQCjJV8tUigrFzgvFzjsWo41JfQg9wbV08MnvJyYtXbw31CbFHvN5DHgO3rb+Kj9SQRPduNweqsmqSOr/pv4dgosHuE8OW2iONOrDUXx31J9tguqVwHfb0B9z2eCPWRKGylIaHJ4JkyhH5UORS7wN7Hj0UyxIlVLiGRzU2nXpd4xq7bS3UMCOkdem7czRKh7MIb2ZAwqGgzWl1j5rd4f7Qq3JykfsPfq62xbHhqzZwilh31hp8qOsbse5oBj2CyW/da03ov0+ufVvsB4CNERcaKWDf2SUfYt7dmROZSYQ6wtoriy3Q8hy59ZVujPLp1+J7q5ZIlRTuhITaB6kyyTHEW+jL8bmNj8PTp4yy7U4+duHzd2lmaVAR93W6YFIlSh8bfZDUw4O ZnoKwl/S vQVhQGjJiDekXTu0Nn3W1O4jjKjPwh9t31imNjdhgirgMP/mMWwf0sCnVgEiuxMqD+RJB/ZWrf+sfh3kBz20pnpS5ssfhFx/t3H2v3Q0/bP0c+PcGLwQGG0cNI8do9pbj0zLFRqucBBIWutAuSNs0pTiK/S0l875LC+Vl8krgECeb8nnC+U7GHzznA56Q666AjQDgWUdDr39o7PockXjjHZ/YZ7VzqBU77B3rbo/ZJdpdrSOmrY2sX/w8h+/5+bn/G4DIgjhePr/CXxZiHMNRHzkfhBMQ7b/bDLk0 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: The only remaining user of mk_huge_pte() is the debug code, so remove the API and replace its use with pfn_pte() which lets us remove the conversion to a page first. We should always call arch_make_huge_pte() to turn this PTE into a huge PTE before operating on it with huge_pte_mkdirty() etc. Signed-off-by: Matthew Wilcox (Oracle) --- include/asm-generic/hugetlb.h | 5 ----- mm/debug_vm_pgtable.c | 18 +++++------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h index f42133dae68e..710b77a1e0e8 100644 --- a/include/asm-generic/hugetlb.h +++ b/include/asm-generic/hugetlb.h @@ -5,11 +5,6 @@ #include #include -static inline pte_t mk_huge_pte(struct page *page, pgprot_t pgprot) -{ - return mk_pte(page, pgprot); -} - static inline unsigned long huge_pte_write(pte_t pte) { return pte_write(pte); diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index bc748f700a9e..7731b238b534 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -910,26 +910,18 @@ static void __init swap_migration_tests(struct pgtable_debug_args *args) #ifdef CONFIG_HUGETLB_PAGE static void __init hugetlb_basic_tests(struct pgtable_debug_args *args) { - struct page *page; pte_t pte; pr_debug("Validating HugeTLB basic\n"); - /* - * Accessing the page associated with the pfn is safe here, - * as it was previously derived from a real kernel symbol. - */ - page = pfn_to_page(args->fixed_pmd_pfn); - pte = mk_huge_pte(page, args->page_prot); + pte = pfn_pte(args->fixed_pmd_pfn, args->page_prot); + pte = arch_make_huge_pte(pte, PMD_SHIFT, VM_ACCESS_FLAGS); +#ifdef CONFIG_ARCH_WANT_GENERAL_HUGETLB + WARN_ON(!pte_huge(pte)); +#endif WARN_ON(!huge_pte_dirty(huge_pte_mkdirty(pte))); WARN_ON(!huge_pte_write(huge_pte_mkwrite(huge_pte_wrprotect(pte)))); WARN_ON(huge_pte_write(huge_pte_wrprotect(huge_pte_mkwrite(pte)))); - -#ifdef CONFIG_ARCH_WANT_GENERAL_HUGETLB - pte = pfn_pte(args->fixed_pmd_pfn, args->page_prot); - - WARN_ON(!pte_huge(arch_make_huge_pte(pte, PMD_SHIFT, VM_ACCESS_FLAGS))); -#endif /* CONFIG_ARCH_WANT_GENERAL_HUGETLB */ } #else /* !CONFIG_HUGETLB_PAGE */ static void __init hugetlb_basic_tests(struct pgtable_debug_args *args) { } From patchwork Fri Feb 21 14:31:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13985606 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 EB328C021B6 for ; Fri, 21 Feb 2025 14:31:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7CA0928000C; Fri, 21 Feb 2025 09:31:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E6DB28000A; Fri, 21 Feb 2025 09:31:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B34C28000F; Fri, 21 Feb 2025 09:31:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 037F228000A for ; Fri, 21 Feb 2025 09:31:09 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id B944A507C1 for ; Fri, 21 Feb 2025 14:31:09 +0000 (UTC) X-FDA: 83144189058.26.DAE50B9 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf01.hostedemail.com (Postfix) with ESMTP id 123D340023 for ; Fri, 21 Feb 2025 14:31:07 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=do8QZX4a; spf=none (imf01.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=1740148268; a=rsa-sha256; cv=none; b=NvH2ysyW4vxjK2RXA5IyeDe/pVAxjIJHyQ5rt+r8vU3TdqvdsQFs5JaUQaDaWS+5vSrw8l Au5r0+Du2822ejjdpMPzmMVwtnsOlz/gETRlWBWp/DHCMUHQ3jXEhXd/9iUHTUC+L7dhPx f6SC3Gkw9UyzJasmm0Hml9xjJd+Uyzc= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=do8QZX4a; spf=none (imf01.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=1740148268; 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=mYKH1mAPTthfanIoFuvHz+2lH48g9yQX03xmi/lqQUA=; b=2zGfyQfRuJ0y4Y5HZ9flhDiQ06BCNeZowalZM3DRTbjD12j97ZKh43oGDkyJNCu5Gqs414 oZgaRedxR4JgfxRdWzUbSQTkD/ftW8xah3zhqfXt7gEGDwfQ7pX+FsvvYYCAHZHef4Advi Mj4Br1/5bLk/JyopnPmLqWPKgeOaB8I= 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=mYKH1mAPTthfanIoFuvHz+2lH48g9yQX03xmi/lqQUA=; b=do8QZX4arlEWPAGiob61UoBcdk T6Nd16b+mpzNz3tL2cU8kKEmo2Ke5Rpa3VvT6MnbtrO9RfCzvvKLN4dpjpL3kp9HXKwKi7q4Ygz4E ceyHI5rm025PE7K2mtW0C2B5Jzjgpe/mClhqw1fH/fwKh5KbYt+gCe/WQPRPNczxnvEKtrnz5G+g1 PYuaUFIJG3Dm1bwT4XNzlods6TQPnYc6zxZGdnsaPjLDUYEPb8XkySD6/3YNG/vddHKLGYwA9VhGj CTxsuSdTXxmXfoW6szE8kkQtTwREATtplq2ajNmhdlqoYIVm+pHwWUCEFLjJBqAc9a/hy35b0H+di MmKZKFPQ==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tlU3W-0000000DzWY-2lbR; Fri, 21 Feb 2025 14:31:06 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , linux-arch@vger.kernel.org Subject: [PATCH 3/4] mm: Add folio_mk_pmd() Date: Fri, 21 Feb 2025 14:31:00 +0000 Message-ID: <20250221143104.3334444-4-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221143104.3334444-1-willy@infradead.org> References: <20250221143104.3334444-1-willy@infradead.org> MIME-Version: 1.0 X-Stat-Signature: 98xuxtbdb6ghwes1sw1p31x7tguuexag X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 123D340023 X-Rspam-User: X-HE-Tag: 1740148267-429471 X-HE-Meta: U2FsdGVkX1+itp+nkDTuI8Qoszya4bc17+Z9H2vXDcFeDWJDvaaQYeb9HK00SO7uFPbJWk64ClQ0atZLXeyi/zFtM4s33pr9g50YtjgMAw1CZ/MhcvAP2WkBYFSyVcpYTeL6czuBA6AoJ5yTo8Mi/dxUf+BoBoZBoohzu6m78k3gefvW6wtuufwNySRyGxTZHdh/+NsDaj4oM2Fr95MCCWaFlApAg0W52ipVChkj+uBbDi/zoF3y8W1eZOHFWJTaNP6wv1SlZS9yVVoPq9wqkyoEZNLJPjP9vt7gGwfls4aTP39zgS5VW5TU+a66JFQixAXWOEDlSySHTr4/SUAA9T9vrnzaBLDO+99QaR3BaOdA6S+ltRnz4ty6NiD+rDfaESKyx+O1MEuAGC4DcH+u+W/xujhK00AbSvTcK7mlRYrdbh5kEna4Z7F3/BKQ3GlSa9gu88nz9wibAViY78KzT5X4mA8q+BJn2vOPy5lGh2qxp5kTGNsqT64drF4HfqG3fcHHnZJE+74/85edqBSCI5uG1NEvEg1k0vxBq3rvEjAS54GgEW3l4IzKZya1YdZ3uaZq47pF7+3g+ptj1tUwmEosCDY62ocSueiVVfkN5lbUiuUUtCvFIIZOfqLNyVl80yal7ZRrSvWQ+xK+ayR3WhjA5YVQkGqgDwGZksosGc24IN7XR0gmR1+k5S3G2U9GcUuY42pWrFJhuna9TlHHLtlpdMtsGCM63EsSu7q3MfGHHdLdATMrYOxfGuECAT+CznwIP1HrH1MMc923uh0H9cui2jWJj/XszmjFLqvXwXRtKWi7jb2CgfLs3gwGO8tbWjQgR3RRwJSQvLnTzRh9Vt1qsH21cohbyfPCiMBuJ4y+c4QNLls0uGWkhktkSo8gQY+PK8WqQ98cIL8e5XQRwc0t2pjDW/RNDorTcYQ4A2u2S6ORFYNSq5CZDrmLVafhulhTG1/ssA12VvfFpL4 M1Cogabo MKLLt+quKNkDybWKv3i6TOmfPq+YAruNU2Cskh2cJJ2+2gqkrc1YQsKbtxnnFFk6+J3PEcqipsSvR8gY8EyUJDhqDXja6vkRyf9o5KUh7hG6mh4QLHPZA3MhlG3tM8B13nE5cfl7EXHGwEHxw5nullv+Q8nF9hvW97Z9wtpwt/dJ1B59d4XdBw5J01SKdaI/PtJRqF7ObUHIyBiibfdNL0XUBSaCcwgsDfrepJD23x+tmaSUA9vZEFAnxL6F3U2BqOIHlpmMASKp9mhaW2a02AQjLxBVYBocbcTeT 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: Removes five conversions from folio to page. Also removes both callers of mk_pmd() that aren't part of mk_huge_pmd(), getting us a step closer to removing the confusion between mk_pmd(), mk_huge_pmd() and pmd_mkhuge(). Signed-off-by: Matthew Wilcox (Oracle) --- fs/dax.c | 3 +-- include/linux/mm.h | 17 +++++++++++++++++ mm/huge_memory.c | 11 +++++------ mm/khugepaged.c | 2 +- mm/memory.c | 2 +- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/fs/dax.c b/fs/dax.c index 21b47402b3dc..22efc6c44539 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1237,8 +1237,7 @@ static vm_fault_t dax_pmd_load_hole(struct xa_state *xas, struct vm_fault *vmf, pgtable_trans_huge_deposit(vma->vm_mm, vmf->pmd, pgtable); mm_inc_nr_ptes(vma->vm_mm); } - pmd_entry = mk_pmd(&zero_folio->page, vmf->vma->vm_page_prot); - pmd_entry = pmd_mkhuge(pmd_entry); + pmd_entry = folio_mk_pmd(zero_folio, vmf->vma->vm_page_prot); set_pmd_at(vmf->vma->vm_mm, pmd_addr, vmf->pmd, pmd_entry); spin_unlock(ptl); trace_dax_pmd_load_hole(inode, vmf, zero_folio, *entry); diff --git a/include/linux/mm.h b/include/linux/mm.h index b1e311bae6b7..5c883c619fa4 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1936,7 +1936,24 @@ static inline pte_t folio_mk_pte(struct folio *folio, pgprot_t pgprot) { return pfn_pte(folio_pfn(folio), pgprot); } + +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +/** + * folio_mk_pmd - Create a PMD for this folio + * @folio: The folio to create a PMD for + * @pgprot: The page protection bits to use + * + * Create a page table entry for the first page of this folio. + * This is suitable for passing to set_pmd_at(). + * + * Return: A page table entry suitable for mapping this folio. + */ +static inline pmd_t folio_mk_pmd(struct folio *folio, pgprot_t pgprot) +{ + return pmd_mkhuge(pfn_pmd(folio_pfn(folio), pgprot)); +} #endif +#endif /* CONFIG_MMU */ /** * folio_maybe_dma_pinned - Report if a folio may be pinned for DMA. diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 3d3ebdc002d5..95ed5dd9622b 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1203,7 +1203,7 @@ static void map_anon_folio_pmd(struct folio *folio, pmd_t *pmd, { pmd_t entry; - entry = mk_huge_pmd(&folio->page, vma->vm_page_prot); + entry = folio_mk_pmd(folio, vma->vm_page_prot); entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma); folio_add_new_anon_rmap(folio, vma, haddr, RMAP_EXCLUSIVE); folio_add_lru_vma(folio, vma); @@ -1311,8 +1311,7 @@ static void set_huge_zero_folio(pgtable_t pgtable, struct mm_struct *mm, pmd_t entry; if (!pmd_none(*pmd)) return; - entry = mk_pmd(&zero_folio->page, vma->vm_page_prot); - entry = pmd_mkhuge(entry); + entry = folio_mk_pmd(zero_folio, vma->vm_page_prot); pgtable_trans_huge_deposit(mm, pmd, pgtable); set_pmd_at(mm, haddr, pmd, entry); mm_inc_nr_ptes(mm); @@ -2570,12 +2569,12 @@ int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pm folio_move_anon_rmap(src_folio, dst_vma); src_folio->index = linear_page_index(dst_vma, dst_addr); - _dst_pmd = mk_huge_pmd(&src_folio->page, dst_vma->vm_page_prot); + _dst_pmd = folio_mk_pmd(src_folio, dst_vma->vm_page_prot); /* Follow mremap() behavior and treat the entry dirty after the move */ _dst_pmd = pmd_mkwrite(pmd_mkdirty(_dst_pmd), dst_vma); } else { src_pmdval = pmdp_huge_clear_flush(src_vma, src_addr, src_pmd); - _dst_pmd = mk_huge_pmd(src_page, dst_vma->vm_page_prot); + _dst_pmd = folio_mk_pmd(src_folio, dst_vma->vm_page_prot); } set_pmd_at(mm, dst_addr, dst_pmd, _dst_pmd); @@ -4306,7 +4305,7 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new) entry = pmd_to_swp_entry(*pvmw->pmd); folio_get(folio); - pmde = mk_huge_pmd(new, READ_ONCE(vma->vm_page_prot)); + pmde = folio_mk_pmd(folio, READ_ONCE(vma->vm_page_prot)); if (pmd_swp_soft_dirty(*pvmw->pmd)) pmde = pmd_mksoft_dirty(pmde); if (is_writable_migration_entry(entry)) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 5f0be134141e..4f85597a7f64 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -1239,7 +1239,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, __folio_mark_uptodate(folio); pgtable = pmd_pgtable(_pmd); - _pmd = mk_huge_pmd(&folio->page, vma->vm_page_prot); + _pmd = folio_mk_pmd(folio, vma->vm_page_prot); _pmd = maybe_pmd_mkwrite(pmd_mkdirty(_pmd), vma); spin_lock(pmd_ptl); diff --git a/mm/memory.c b/mm/memory.c index ea5a58db76dd..6d1a1185c34c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5078,7 +5078,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) flush_icache_pages(vma, page, HPAGE_PMD_NR); - entry = mk_huge_pmd(page, vma->vm_page_prot); + entry = folio_mk_pmd(folio, vma->vm_page_prot); if (write) entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma); From patchwork Fri Feb 21 14:31:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 13985608 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 7BBF2C021B3 for ; Fri, 21 Feb 2025 14:31:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D3E1528000D; Fri, 21 Feb 2025 09:31:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A4476280004; Fri, 21 Feb 2025 09:31:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 64A1428000B; Fri, 21 Feb 2025 09:31:10 -0500 (EST) 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 154D928000C for ; Fri, 21 Feb 2025 09:31:10 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C30B91411F5 for ; Fri, 21 Feb 2025 14:31:09 +0000 (UTC) X-FDA: 83144189058.14.746A115 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf09.hostedemail.com (Postfix) with ESMTP id 1356014000B for ; Fri, 21 Feb 2025 14:31:07 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=TrreS7Wm; dmarc=none; spf=none (imf09.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=1740148268; a=rsa-sha256; cv=none; b=h1AJ+1lAPfphVq2AVplbpn+xnuazbBkOcFNweERXoyNBf+0B1B9I207AWGsLap/094FeE1 4akC1IdQ9aGAhqLcbiKtRB8xleceH932jPLiIvYP6QmnOzp4ZxQvuDX9BT5ZxXMRrvTC1D QPch2WsLCqZImbUMqWt5anU1esjg5IA= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=TrreS7Wm; dmarc=none; spf=none (imf09.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=1740148268; 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=OPZaoplXu1Ps7T1qsZcLBPox+GXOWYr2sK+vfK2TF8U=; b=2QrxnuCNBzKpMji9EsBJg7qT4vWEqgByL6/TDFfQwwfPDBMid3uDm3lr4EQJQ7p3IytgZt mgD7BkIrBz9xv5RcYF2P6kPqdBe259lMVOHo7p8tHALssOlDBzatNVx50xdJYX4Bp2mUSQ HRYt0TH+19Rcprok+4l1wv/Aa25wDBI= 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=OPZaoplXu1Ps7T1qsZcLBPox+GXOWYr2sK+vfK2TF8U=; b=TrreS7WmUoSGumAOdSOC98rBTd ggeQ0aoHD+zkND+Jl5LO9Ef+aLoo1VBvIhI5d/Lo5dcme7yECjTZ5LhB97/tLmIfIhxmuV784BW1r NkgboQ7hAXm3+rfwPWs733REmeHam9jOLnT8ixeHWd1E0mj6VsupmyX4MGWLR97rywzzZpuBounLN R7SSDr1Njo2rKNu5Ys1OgQZnOX5tbpaUbAHyeITD8CL7ugHSf9+NQ8RuKMb0vrSC+v9IhYCQbmtYX 102zdcigOT+Qfn4+QQk6laNYElp19Bnvnhfv+Oufpfug0e2s7+E4dkuJMNQPt/htXq/H4/Y3ptr0c w4q2jEKA==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1tlU3W-0000000DzWe-3I4M; Fri, 21 Feb 2025 14:31:06 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , linux-arch@vger.kernel.org Subject: [PATCH 4/4] arch: Remove mk_pmd() Date: Fri, 21 Feb 2025 14:31:01 +0000 Message-ID: <20250221143104.3334444-5-willy@infradead.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221143104.3334444-1-willy@infradead.org> References: <20250221143104.3334444-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 1356014000B X-Stat-Signature: rtffz717tkd6s75smcn3wrm7r4gzsr11 X-Rspam-User: X-HE-Tag: 1740148267-858148 X-HE-Meta: U2FsdGVkX19GzgghwPR99VyFjnoVXFjt1NGdcRMtRxp/KpYk9fPbv16CqalfH6CDk0Fa3G/GYMqkru3mKGrm89SPHpzApjXWC5x6mvjfZTaMIH4QigyEkjbrV2Db/F3EFkuYuC+YPmlFdQqkEkbS/vtz0B8+ZbYXGtpo6t0TUytzyzkIhUB4gEg+qGe/31zwd0PqZHhC5vgZdEsycGHzBfl9bo9WnN/sh7+Y+SpFBJ0euCGeyH543tvmV9eByF+nHoLQQlpLomyIQ6jjxQVjNK+HXAtzQwjbssW8u7QTZbJDYCzYkS8jBA3uo+b68d3xkXmomLZ1Hf+X7FfpU/6lK0q6WlfPKCnxMd5s8UDAqAfvmO3+aoYPwEBUjxtuhCmphlTc8Wusi0EIHIdFiFPPGMLRTr7j+yY3F2APxNAhZKT8t+BydaJaWGnnAKbHNohMLNUCWfWBRa67ICjRXm8yFF4+cfh0sceXqRGR7n7/Pw3vHtYbV1EW29zYEPh+uP3OhgYbWZttQN2iIE35o1/TZehu6nMwZd9gQBhq4bDxPvIJLYEuwGVgpn/tR0I7zZzDh092l2BA4lBLLlOwnJLPduqdyn2sqNLNm1Y0toGePUD3cDs6B9hTbD4enLbs/eSvVkqlTq+981ayZTxeOQ2utaTI6Db1gUlaFwZfyeaEUY8+V6OOK+t3Y9+iZJ5LFCDdWalSYELtp+hWuVgGEkRQOw0QPX6VsHPjnAZDom/PBW6P+SAV9JdQOBc456AjxSRRytY6Y9sfTDtLqCvR+QTOgBjR559NsnEYqP271qM812bm8rrCT5h7UvFpAHQ0gzL23QXn6ROkWGunmEGBvmbwJFsafnAhktHgwY0Ugr9jksZFjBHndbWJJmT3lyOO4tbHYsgmLn0Ds0Z/qy1gAN9zV6hz15cyARFLY2NmOJEevy150Ly+g8E4B63ULvZlGB6m8ezkuo7PZNoxn2jDQJT 6umnNLms 19IDT7bLJ84L/2SVKHrOtFNir1LGXpZW1jgFA6cCyeCR/wEhHQYlJ18v4h4MuxcclWAdO25HDIvVGKz6vHpPbMKIeN68r0av8e8+1oUaBg0FinBjENiQ6qoDR7GPvPWbLCvP/QYGN5W2Vqw0gR6cuj1KKRZErACgf7z8af1JLQIYhclcCI/A62or3LE9x2GQCEA65ZQ8pj/2di5QW0HaTYUlIGyZLhMtRxjj3V4JpVOvXZuHV1VDZXwwE8jdUHj6wVIJoFSWwxkmNe2TA26fASVx83/aoddo9+1Cq 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: There are now no callers of mk_huge_pmd() and mk_pmd(). Remove them. Signed-off-by: Matthew Wilcox (Oracle) --- arch/arc/include/asm/hugepage.h | 2 -- arch/arc/include/asm/pgtable-levels.h | 1 - arch/arm/include/asm/pgtable-3level.h | 1 - arch/arm64/include/asm/pgtable.h | 1 - arch/loongarch/include/asm/pgtable.h | 1 - arch/loongarch/mm/pgtable.c | 9 --------- arch/mips/include/asm/pgtable.h | 3 --- arch/mips/mm/pgtable-32.c | 10 ---------- arch/mips/mm/pgtable-64.c | 9 --------- arch/powerpc/include/asm/book3s/64/pgtable.h | 1 - arch/powerpc/mm/book3s64/pgtable.c | 5 ----- arch/riscv/include/asm/pgtable-64.h | 2 -- arch/s390/include/asm/pgtable.h | 1 - arch/sparc/include/asm/pgtable_64.h | 1 - arch/x86/include/asm/pgtable.h | 2 -- include/linux/huge_mm.h | 2 -- 16 files changed, 51 deletions(-) diff --git a/arch/arc/include/asm/hugepage.h b/arch/arc/include/asm/hugepage.h index 8a2441670a8f..7765dc105d54 100644 --- a/arch/arc/include/asm/hugepage.h +++ b/arch/arc/include/asm/hugepage.h @@ -40,8 +40,6 @@ static inline pmd_t pte_pmd(pte_t pte) #define pmd_young(pmd) pte_young(pmd_pte(pmd)) #define pmd_dirty(pmd) pte_dirty(pmd_pte(pmd)) -#define mk_pmd(page, prot) pte_pmd(mk_pte(page, prot)) - #define pmd_trans_huge(pmd) (pmd_val(pmd) & _PAGE_HW_SZ) #define pfn_pmd(pfn, prot) (__pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) diff --git a/arch/arc/include/asm/pgtable-levels.h b/arch/arc/include/asm/pgtable-levels.h index 55dbd2719e35..d1ce4b0f1071 100644 --- a/arch/arc/include/asm/pgtable-levels.h +++ b/arch/arc/include/asm/pgtable-levels.h @@ -142,7 +142,6 @@ #define pmd_pfn(pmd) ((pmd_val(pmd) & PMD_MASK) >> PAGE_SHIFT) #define pfn_pmd(pfn,prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) -#define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot) #endif diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h index fa5939eb9864..7b71a3d414b7 100644 --- a/arch/arm/include/asm/pgtable-3level.h +++ b/arch/arm/include/asm/pgtable-3level.h @@ -209,7 +209,6 @@ PMD_BIT_FUNC(mkyoung, |= PMD_SECT_AF); #define pmd_pfn(pmd) (((pmd_val(pmd) & PMD_MASK) & PHYS_MASK) >> PAGE_SHIFT) #define pfn_pmd(pfn,prot) (__pmd(((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))) -#define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot) /* No hardware dirty/accessed bits -- generic_pmdp_establish() fits */ #define pmdp_establish generic_pmdp_establish diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 64b469d799c6..5c0c184bf044 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -607,7 +607,6 @@ static inline pmd_t pmd_mkspecial(pmd_t pmd) #define __phys_to_pmd_val(phys) __phys_to_pte_val(phys) #define pmd_pfn(pmd) ((__pmd_to_phys(pmd) & PMD_MASK) >> PAGE_SHIFT) #define pfn_pmd(pfn,prot) __pmd(__phys_to_pmd_val((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot)) -#define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot) #define pud_young(pud) pte_young(pud_pte(pud)) #define pud_mkyoung(pud) pte_pud(pte_mkyoung(pud_pte(pud))) diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/include/asm/pgtable.h index 9ba3a4ebcd98..a3f17914dbab 100644 --- a/arch/loongarch/include/asm/pgtable.h +++ b/arch/loongarch/include/asm/pgtable.h @@ -255,7 +255,6 @@ static inline void pmd_clear(pmd_t *pmdp) #define pmd_page_vaddr(pmd) pmd_val(pmd) -extern pmd_t mk_pmd(struct page *page, pgprot_t prot); extern void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd); #define pte_page(x) pfn_to_page(pte_pfn(x)) diff --git a/arch/loongarch/mm/pgtable.c b/arch/loongarch/mm/pgtable.c index 22a94bb3e6e8..352d9b2e02ab 100644 --- a/arch/loongarch/mm/pgtable.c +++ b/arch/loongarch/mm/pgtable.c @@ -135,15 +135,6 @@ void kernel_pte_init(void *addr) } while (p != end); } -pmd_t mk_pmd(struct page *page, pgprot_t prot) -{ - pmd_t pmd; - - pmd_val(pmd) = (page_to_pfn(page) << PFN_PTE_SHIFT) | pgprot_val(prot); - - return pmd; -} - void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h index d69cfa5a8ac6..4852b005a72d 100644 --- a/arch/mips/include/asm/pgtable.h +++ b/arch/mips/include/asm/pgtable.h @@ -713,9 +713,6 @@ static inline pmd_t pmd_clear_soft_dirty(pmd_t pmd) #endif /* CONFIG_HAVE_ARCH_SOFT_DIRTY */ -/* Extern to avoid header file madness */ -extern pmd_t mk_pmd(struct page *page, pgprot_t prot); - static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) { pmd_val(pmd) = (pmd_val(pmd) & (_PAGE_CHG_MASK | _PAGE_HUGE)) | diff --git a/arch/mips/mm/pgtable-32.c b/arch/mips/mm/pgtable-32.c index 84dd5136d53a..e2cf2166d5cb 100644 --- a/arch/mips/mm/pgtable-32.c +++ b/arch/mips/mm/pgtable-32.c @@ -31,16 +31,6 @@ void pgd_init(void *addr) } #if defined(CONFIG_TRANSPARENT_HUGEPAGE) -pmd_t mk_pmd(struct page *page, pgprot_t prot) -{ - pmd_t pmd; - - pmd_val(pmd) = (page_to_pfn(page) << PFN_PTE_SHIFT) | pgprot_val(prot); - - return pmd; -} - - void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { diff --git a/arch/mips/mm/pgtable-64.c b/arch/mips/mm/pgtable-64.c index 1e544827dea9..b24f865de357 100644 --- a/arch/mips/mm/pgtable-64.c +++ b/arch/mips/mm/pgtable-64.c @@ -90,15 +90,6 @@ void pud_init(void *addr) #endif #ifdef CONFIG_TRANSPARENT_HUGEPAGE -pmd_t mk_pmd(struct page *page, pgprot_t prot) -{ - pmd_t pmd; - - pmd_val(pmd) = (page_to_pfn(page) << PFN_PTE_SHIFT) | pgprot_val(prot); - - return pmd; -} - void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 6d98e6f08d4d..6ed93e290c2f 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -1096,7 +1096,6 @@ static inline bool pmd_access_permitted(pmd_t pmd, bool write) #ifdef CONFIG_TRANSPARENT_HUGEPAGE extern pmd_t pfn_pmd(unsigned long pfn, pgprot_t pgprot); extern pud_t pfn_pud(unsigned long pfn, pgprot_t pgprot); -extern pmd_t mk_pmd(struct page *page, pgprot_t pgprot); extern pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot); extern pud_t pud_modify(pud_t pud, pgprot_t newprot); extern void set_pmd_at(struct mm_struct *mm, unsigned long addr, diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/pgtable.c index ce64abea9e3e..81a1fa7dcc23 100644 --- a/arch/powerpc/mm/book3s64/pgtable.c +++ b/arch/powerpc/mm/book3s64/pgtable.c @@ -270,11 +270,6 @@ pud_t pfn_pud(unsigned long pfn, pgprot_t pgprot) return __pud_mkhuge(pud_set_protbits(__pud(pudv), pgprot)); } -pmd_t mk_pmd(struct page *page, pgprot_t pgprot) -{ - return pfn_pmd(page_to_pfn(page), pgprot); -} - pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) { unsigned long pmdv; diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h index 0897dd99ab8d..188fadc1c21f 100644 --- a/arch/riscv/include/asm/pgtable-64.h +++ b/arch/riscv/include/asm/pgtable-64.h @@ -262,8 +262,6 @@ static inline unsigned long _pmd_pfn(pmd_t pmd) return __page_val_to_pfn(pmd_val(pmd)); } -#define mk_pmd(page, prot) pfn_pmd(page_to_pfn(page), prot) - #define pmd_ERROR(e) \ pr_err("%s:%d: bad pmd %016lx.\n", __FILE__, __LINE__, pmd_val(e)) diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index db932beabc87..7d8d8793259a 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h @@ -1870,7 +1870,6 @@ static inline pmd_t pmdp_collapse_flush(struct vm_area_struct *vma, #define pmdp_collapse_flush pmdp_collapse_flush #define pfn_pmd(pfn, pgprot) mk_pmd_phys(((pfn) << PAGE_SHIFT), (pgprot)) -#define mk_pmd(page, pgprot) pfn_pmd(page_to_pfn(page), (pgprot)) static inline int pmd_trans_huge(pmd_t pmd) { diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h index ac115adb488f..5a6dc10486de 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h @@ -233,7 +233,6 @@ static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot) return __pmd(pte_val(pte)); } -#define mk_pmd(page, pgprot) pfn_pmd(page_to_pfn(page), (pgprot)) #endif /* This one can be done with two shifts. */ diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 9f480bdafd20..d09d17cff956 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -1347,8 +1347,6 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, #define flush_tlb_fix_spurious_fault(vma, address, ptep) do { } while (0) -#define mk_pmd(page, pgprot) pfn_pmd(page_to_pfn(page), (pgprot)) - #define __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS extern int pmdp_set_access_flags(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 93e509b6c00e..78341bb40351 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -461,8 +461,6 @@ static inline bool is_huge_zero_pmd(pmd_t pmd) struct folio *mm_get_huge_zero_folio(struct mm_struct *mm); void mm_put_huge_zero_folio(struct mm_struct *mm); -#define mk_huge_pmd(page, prot) pmd_mkhuge(mk_pmd(page, prot)) - static inline bool thp_migration_supported(void) { return IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION);