From nobody Fri Sep 25 12:03:21 2026 Received: from mail-pz2-f12.google.com (mail-pz2-f12.google.com [74.125.228.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D553F399351 for ; Sun, 13 Sep 2026 08:40:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288828; cv=none; b=I/jTPRb3MVZ4tJMGhXRcX5n1RO2lLMbVtwCkkz43vZYzTkKG6ra8uEgFisB4T3JTSk8H662mkE38XheihI6R1MCk4KpgRAxXu5AIgO41T9CMCBCN4bZl6jbrCNvxA/KhHMnK3nhDSBrQB4rJgCSS2Jekwz2ComxaTpSqV/PrOsw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288828; c=relaxed/simple; bh=ERvHyzbM58ZbWb1//ykapsIA81TlTuDlx//Ygo4cUVw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aSAAhpLP/DkZpcp6q0Gsrn7IdJycXrdcmmm7ymIjq45UFLdlynvMyt5JqMhYQroWdTWOXS/az+kxDyZrJFmc0utujA4oO/4qkx5GalRL4nTSpbNA6MxDl3ywcScYf4/LRmnnTQP4hrSaJEEEp+NU4E8WH2y2Zg6mQRy0yD2d3EA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=DR9WV2dZ; arc=none smtp.client-ip=74.125.228.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="DR9WV2dZ" Received: by mail-pz2-f12.google.com with SMTP id d2e1a72fcca58-85469b2e1d7so971476b3a.0 for ; Sun, 13 Sep 2026 01:40:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1789288826; x=1789893626; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eFsIa9cK+8+fehtCpbOiW01jVXax8X3u6/tt3T4Yifc=; b=DR9WV2dZp+E2Yrawvbe71qoA9GwgGNaE/lrQfRnH90AeRuKJ9ofeJHXB9NluXHBhVJ /W+jPoWz8tkQ058DnZ/d4y09DOVLU7rcw/c+aRmSDTqr6YaXEnQvSEvOeprlPK4PQHSe 6nkEtUAT9B9r/I4Ybc/K9nWhuFFdMx9g2OLPIlvC+TJLnI5OR+oD7QEh5qu7VoCkj1LL QNH1MyAKlsxiP4YTf3eJtIjWvZRnon3brL5IMHSyPK01v2WZQH/V/OvLPwe2BBOKqNCg evOIiIpJ8RR99jNSD9CV3NA3dgWzfVFm1XTaCay3VYTBDPaMuEnVW1PCZMu6ZBcnKnVb MLYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789288826; x=1789893626; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=eFsIa9cK+8+fehtCpbOiW01jVXax8X3u6/tt3T4Yifc=; b=E/dyT0dvG9TZx85Jk66GLMABTt/xGSmuB3xmQFmzEvaQzt13/BhsrzbTMFRrS1e5BG Zr/GCMaMhRh44m7iYWoYpIoR6FzdO5vmIGuypkeEXjNierNBk2VmRoAeYHfa9GSX7G4y /j58cqfceSk+W3QnQhdazoC9KY7Gg8WFoSOMND1wrAqetIhYSQr6DNFPGucMJnb1808I cSuKy2VFRl/pZ/Hp1sYpY4az2C0Pnqedai29RphyU73X7bt0Uzu/f452BZYKkQ7Nfh9K p6zL6Ujx/zZW5ED6hqsH7xgXpfNWLtTUCnIf4UCil/N+x18opSjNtlPyJJ5PCYcBYL4C bH1A== X-Forwarded-Encrypted: i=1; AKwUvBz3/Hw9xSGSP6EzSIrIDw5kd2pb/Sakq/A7knpnY6oCNOru0Leusi1EkcCfvWCqOhsWlFSLI1YguNFbq6k=@vger.kernel.org X-Gm-Message-State: AFuF++mwlrikDLISyOimGcS6qlOduBep87jcPllZElrlSWg+qsfThJeZ UNK/UkVHq+Nw9Xw9xMELJ5o65oIS4Nkzj4vu/mI1Bj6jvkEywXKq8eh4co9Q/a+lylo= X-Gm-Gg: AYBFou2sO8PiAoYGgSCgRLQTPsdWpU3A3ekJV5sVoMzTCTjIBMh3AYK7l2GjaI4uyfZ pzRsPPCUadmpxOMnPITp34WsrLz8yzmxIakQF8bUa67ILFbkhr5iM7kA7qPIxm6L499UYZGavlw E9k+v127R90l+pOPRRMeWS1+jnAUaLX+mJAjIoe3wFL+Dzmju/hJTqnuT4ZiNZjydTjMg+jkneL FyeGdRl/gMwRXBMHADTankaO3jI4bjquDwzh1Wj04lu5bjmEa2quHKa+I/BHLtYIsLne/6c2tJa goDMAYAlcsnC2P+XfQbUKjAQAXYCHpL2V3JuVXDv3JmdWEXjxcgaZ01m0ij1Il+r+cofKia5KSa n2a0MESd6rEgmfJ4pu5DveulGtEfYMfZ/Jl0blLx3NYWseVYz3jVJfahToPXbygmK/O05sIcLdf 6lBv9ACU4IeoXpurnKVmzmFlSqBAhr5tSQRixxcbaECRjbp2GP17C1DAVYteBDqMC3fw2yf+3Uu bxe65isiSs6A7YuogA+w+3k7NE= X-Received: by 2002:a05:6a00:148d:b0:848:6c9c:4074 with SMTP id d2e1a72fcca58-86b30413328mr18406280b3a.1.1789288825870; Sun, 13 Sep 2026 01:40:25 -0700 (PDT) Received: from G6L4RL2QG9 ([2409:8a00:1832:cf0:5137:990:100e:cc7e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b29cbb0d3sm3070531b3a.42.2026.09.13.01.40.16 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 01:40:25 -0700 (PDT) From: Muchun Song To: Madhavan Srinivasan , Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Michael Ellerman , Nicholas Piggin , Christophe Leroy , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Qi Zheng , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 1/6] mm/sparse-vmemmap: drop VMEMMAP_POPULATE_DAX Date: Sun, 13 Sep 2026 16:37:29 +0800 Message-ID: <20260913083734.86802-2-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260913083734.86802-1-songmuchun@bytedance.com> References: <20260913083734.86802-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" VMEMMAP_POPULATE_DAX currently distinguishes DAX vmemmap population in two places: it keeps allocations on the normal path and takes a reference when a backing page is supplied for reuse. After Device DAX switched to the common per-zone shared tail page, both conditions can be determined locally. DAX supplies ptpfn for every shared tail mapping and requests an allocation only for compound head mappings, whose PFNs are not optimizable. Therefore, vmemmap_optimizable_pfn() alone selects the correct allocation path. When ptpfn is supplied, the caller is reusing an existing backing page. Once the slab allocator is available, take a reference for each reused mapping to balance the release performed by vmemmap_free(). Early mappings are backed by memblock/reserved memory and do not need page reference accounting. Remove VMEMMAP_POPULATE_DAX and the flags argument from the vmemmap population helpers. Signed-off-by: Muchun Song Acked-by: Qi Zheng --- mm/sparse-vmemmap.c | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 96506f594924..878d29a4e862 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -32,12 +32,6 @@ #include #include =20 -/* - * Flags for vmemmap_populate_range and friends. - */ -/* Vmemmap population for ZONE_DEVICE compound pages */ -#define VMEMMAP_POPULATE_DAX 0x0001 - #include "internal.h" #include "mm_init.h" #include "sparse.h" @@ -208,7 +202,7 @@ struct page __ref *vmemmap_shared_tail_page(unsigned in= t order, struct zone *zon } =20 static __meminit void *vmemmap_alloc_pte(unsigned long pfn, int node, - struct vmem_altmap *altmap, unsigned long flags) + struct vmem_altmap *altmap) { struct zone *zone; struct page *page; @@ -218,7 +212,7 @@ static __meminit void *vmemmap_alloc_pte(unsigned long = pfn, int node, * Device DAX still relies on vmemmap_populate_compound_pages() for * head/first-tail allocation and tail-page reuse. */ - if (!vmemmap_optimizable_pfn(pfn) || flags & VMEMMAP_POPULATE_DAX) + if (!vmemmap_optimizable_pfn(pfn)) return vmemmap_alloc_block_buf(PAGE_SIZE, node, altmap); =20 zone =3D pfn_to_zone(pfn, node); @@ -230,8 +224,7 @@ static __meminit void *vmemmap_alloc_pte(unsigned long = pfn, int node, } =20 static pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long ad= dr, int node, - struct vmem_altmap *altmap, - unsigned long ptpfn, unsigned long flags) + struct vmem_altmap *altmap, unsigned long ptpfn) { pte_t *pte =3D pte_offset_kernel(pmd, addr); unsigned long pfn =3D page_to_pfn((struct page *)addr); @@ -240,7 +233,7 @@ static pte_t * __meminit vmemmap_pte_populate(pmd_t *pm= d, unsigned long addr, in pte_t entry; =20 if (ptpfn =3D=3D (unsigned long)-1) { - void *p =3D vmemmap_alloc_pte(pfn, node, altmap, flags); + void *p =3D vmemmap_alloc_pte(pfn, node, altmap); =20 if (!p) return NULL; @@ -255,7 +248,7 @@ static pte_t * __meminit vmemmap_pte_populate(pmd_t *pm= d, unsigned long addr, in * and through vmemmap_populate_compound_pages() when * slab is available. */ - if (flags & VMEMMAP_POPULATE_DAX) + if (slab_is_available()) get_page(pfn_to_page(ptpfn)); } entry =3D pfn_pte(ptpfn, PAGE_KERNEL); @@ -318,8 +311,7 @@ static pgd_t * __meminit vmemmap_pgd_populate(unsigned = long addr, int node) =20 static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int = node, struct vmem_altmap *altmap, - unsigned long ptpfn, - unsigned long flags) + unsigned long ptpfn) { pgd_t *pgd; p4d_t *p4d; @@ -339,7 +331,7 @@ static pte_t * __meminit vmemmap_populate_address(unsig= ned long addr, int node, pmd =3D vmemmap_pmd_populate(pud, addr, node); if (!pmd) return NULL; - pte =3D vmemmap_pte_populate(pmd, addr, node, altmap, ptpfn, flags); + pte =3D vmemmap_pte_populate(pmd, addr, node, altmap, ptpfn); if (!pte) return NULL; vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); @@ -350,15 +342,14 @@ static pte_t * __meminit vmemmap_populate_address(uns= igned long addr, int node, static int __meminit vmemmap_populate_range(unsigned long start, unsigned long end, int node, struct vmem_altmap *altmap, - unsigned long ptpfn, - unsigned long flags) + unsigned long ptpfn) { unsigned long addr =3D start; pte_t *pte; =20 for (; addr < end; addr +=3D PAGE_SIZE) { pte =3D vmemmap_populate_address(addr, node, altmap, - ptpfn, flags); + ptpfn); if (!pte) return -ENOMEM; } @@ -369,7 +360,7 @@ static int __meminit vmemmap_populate_range(unsigned lo= ng start, int __meminit vmemmap_populate_basepages(unsigned long start, unsigned lon= g end, int node, struct vmem_altmap *altmap) { - return vmemmap_populate_range(start, end, node, altmap, -1, 0); + return vmemmap_populate_range(start, end, node, altmap, -1); } =20 /* @@ -498,7 +489,6 @@ static int __meminit vmemmap_populate_compound_pages(un= signed long start_pfn, unsigned long size, addr; pte_t *pte; int rc; - unsigned long flags =3D VMEMMAP_POPULATE_DAX; struct page *page; unsigned int order =3D pfn_to_section_compound_order(start_pfn); =20 @@ -508,14 +498,14 @@ static int __meminit vmemmap_populate_compound_pages(= unsigned long start_pfn, =20 if (reuse_compound_section(start_pfn, pgmap)) return vmemmap_populate_range(start, end, node, NULL, - page_to_pfn(page), flags); + page_to_pfn(page)); =20 size =3D min(end - start, (1UL << order) * sizeof(struct page)); for (addr =3D start; addr < end; addr +=3D size) { unsigned long next, last =3D addr + size; =20 /* Populate the head page vmemmap page */ - pte =3D vmemmap_populate_address(addr, node, NULL, -1, flags); + pte =3D vmemmap_populate_address(addr, node, NULL, -1); if (!pte) return -ENOMEM; =20 @@ -525,7 +515,7 @@ static int __meminit vmemmap_populate_compound_pages(un= signed long start_pfn, */ next =3D addr + PAGE_SIZE; rc =3D vmemmap_populate_range(next, last, node, NULL, - page_to_pfn(page), flags); + page_to_pfn(page)); if (rc) return -ENOMEM; } --=20 2.54.0 From nobody Fri Sep 25 12:03:21 2026 Received: from mail-pz2-f12.google.com (mail-pz2-f12.google.com [74.125.228.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F15373955DB for ; Sun, 13 Sep 2026 08:40:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288837; cv=none; b=bBkqPsDgCUDjOuNuRW/ccEV7fJZfZOpw8zNEEA1zYvpvB14zII+asJE8Kpd7msdgXpasen8Etc2LAwiq7HCave97djXwgNSeFgFpxj5Lj/IDbxw7WltAGmIaul0XmUNemd0Wu4D8B2mExz9mD4GBo4B4xQGMEOILHWoElgxLWTc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288837; c=relaxed/simple; bh=nXqKkthQoxndQtXnTGuAm/HrZbKfZvzgLQOPbI6ThFk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FfSN0xCKT0n2U1v3a6JqD3Bbt/X6pA7m25y4BtqjGIOAh2lxKDU5UeurMaNyg+89fgtdqA4h+ZnV3e3KYiiYYzogq8Mo3ERftMDvYVlahca7BqpWLwleAu4PxoecXnBVqagbhYwi0n01EQluno9wRWKLCDNuqnTidpe0HC2GFXI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=a0tCJhS0; arc=none smtp.client-ip=74.125.228.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="a0tCJhS0" Received: by mail-pz2-f12.google.com with SMTP id d2e1a72fcca58-8692a856865so1449044b3a.2 for ; Sun, 13 Sep 2026 01:40:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1789288835; x=1789893635; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZbLBsQvqBa0OuqffzZ60qrRN9YSSPX5HFZkA81JtLUU=; b=a0tCJhS0cwtbeDHUKfB3SkC3/WMlpuUPzmLgNUM3lipjFXiqaNazZWiyj1YQDCC4i8 v7IQFUqAXKM6OO+DA56jxEiUC68vG09qlZP/liMFqk0O8s/TnGX3lB/IFOnHCj43jzsC 1EJCmqpmEy3McSuoc2SG6tXXVUc+bkrZqme6SW0SnpSm/DqruFVG0kmncNnkCQHXhh6b SOlO6BCoVVjomXUQKVR+5DPH/ncsgW3rQ4EbDEvQglaJnX51/HQDWWnueJCVx+OP4ae6 MQpqSVNxGqTgn9RUqHD5gig9AJ8JjqUYVXGqaaQO/nBa5XuP3djvsRen+Hivd+I4GvAL T7Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789288835; x=1789893635; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ZbLBsQvqBa0OuqffzZ60qrRN9YSSPX5HFZkA81JtLUU=; b=n9BJqKPwpoEhiqGfGTPZBsSSRLyGQAplcB+CFKlTdwYYS0ja7QiQblzgHMd2JSAj5b 8hzvHume1EvOkmBESWzK/ruUpSWLlh0jgvrC6XlbujWxjjKeAwp0+zENVaDV32cR5jFj gNgDiwZv311hPkR6cZmW/lr7VpN8NfTvaLw/BI88Etq7b840TKtoLMbbrBwI2kyDtfth 6MAVeebuOevy205TKLjSjd/4qXJIxkklWn15wLLiED/4ttSpwLFb31NKE2LNkcGhUF3q iwnm44Pnh3aORwp80/fml38mYEnRBcJK7vemPP/KdpDcyyd9fnul6+cMLGcUfJL3UJ40 b9Eg== X-Forwarded-Encrypted: i=1; AKwUvBwC3kGp2aPi1yuE2BV8qQBXJjjleRaI4G0XOg1K3jwIeTTNn+rPSxN0b6/oEL2g57j/o7oHgPSj8wmp/uU=@vger.kernel.org X-Gm-Message-State: AFuF++n/U0nN5PQTnxCaYz6iHPTLq9D4tEM4sLaaRwxCwm5357I7S6l9 KiJwnqWBKgluUEdsDErQ8+EGmEZRZXeSUgUP+5UxMi18FESv9CitXpOfpKNaKKsyVRU= X-Gm-Gg: AYBFou3SSX8KGmybDm9G9Q0/SeMMjHtJb20mUyFuRsu6vyI1UzdQbzPkhIQq4tZggDN XjF+o+pSsJKmgmbHBEVQLf5qbCiE8gI8b8Vur6X3mT58BDTQ93Api3roG54vMc8Z7MRWrKJuhjI DeUfQOWXbZAj8zihjmcWNAmMnVzRQ1mw491l8Ug/8WNpJzjFfGJm+h5UIeoH9QyWiDWLdh3llLG 34knhFfMH9JU0VlCkEVlqCsI7Fg3txuylVAfhiXWf3wfag/7E43TcmMASoVLGx/8IrLWRuqJOTU k58dSaL3ZPeYisWkOLsYwQQ7lbM7u+kqCUf8E4gxKaS5FmOZVlCRdF7afUAtDrg0QWsjKu8uU+3 W5m88y4ztFvzc2jQbf36+qo9v+6j4LZZuOxsvxTx4rSWVqxkeTX6WjJaKmMDecEddtW3Su3SUhk CNYjmRS2ddgiJHNi0zT4kpxzilsSmZzQjHwrY8bEnL90Dyi4T7NCH0tKNOGBqmv+F5Ai2ArGTY8 Qd3Osj5a9eTywr7RgaCkApQdYHVlnmrDIjHNg== X-Received: by 2002:a05:6a00:2d9f:b0:857:72ba:ff11 with SMTP id d2e1a72fcca58-86b34f095b3mr19117087b3a.25.1789288835163; Sun, 13 Sep 2026 01:40:35 -0700 (PDT) Received: from G6L4RL2QG9 ([2409:8a00:1832:cf0:5137:990:100e:cc7e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b29cbb0d3sm3070531b3a.42.2026.09.13.01.40.26 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 01:40:34 -0700 (PDT) From: Muchun Song To: Madhavan Srinivasan , Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Michael Ellerman , Nicholas Piggin , Christophe Leroy , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Qi Zheng , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 2/6] mm/sparse-vmemmap: support device DAX in common vmemmap path Date: Sun, 13 Sep 2026 16:37:30 +0800 Message-ID: <20260913083734.86802-3-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260913083734.86802-1-songmuchun@bytedance.com> References: <20260913083734.86802-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The common vmemmap population path cannot yet handle optimized Device DAX mappings on its own. It uses pfn_to_zone() to find the shared tail page, but Device DAX populates its vmemmap at runtime before the ZONE_DEVICE span is initialized. Teach the common path to use device_zone() for runtime optimized vmemmap population while retaining pfn_to_zone() for early boot. This allows the same path to support both early boot mappings and Device DAX. The backing PFN supplied by the Device DAX-specific population path is no longer used, allowing the redundant lookup and population code to be removed later. Signed-off-by: Muchun Song --- mm/sparse-vmemmap.c | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 878d29a4e862..e83821768c12 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -208,18 +208,27 @@ static __meminit void *vmemmap_alloc_pte(unsigned lon= g pfn, int node, struct page *page; const unsigned int order =3D pfn_to_section_compound_order(pfn); =20 - /* - * Device DAX still relies on vmemmap_populate_compound_pages() for - * head/first-tail allocation and tail-page reuse. - */ if (!vmemmap_optimizable_pfn(pfn)) return vmemmap_alloc_block_buf(PAGE_SIZE, node, altmap); =20 - zone =3D pfn_to_zone(pfn, node); + /* + * At runtime (slab available), only ZONE_DEVICE pages trigger vmemmap + * optimization, so device_zone() suffices. Note that pfn_to_zone() + * cannot be used at runtime because the zone span is not set up now. + */ + zone =3D slab_is_available() ? device_zone(node) : pfn_to_zone(pfn, node); page =3D vmemmap_shared_tail_page(order, zone); if (!page) return NULL; =20 + /* + * When a PTE entry is freed, a free_pages() call occurs. This get_page() + * pairs with put_page_testzero() on the freeing path. This can only occur + * when slab is available. + */ + if (slab_is_available()) + get_page(page); + return page_address(page); } =20 @@ -231,27 +240,12 @@ static pte_t * __meminit vmemmap_pte_populate(pmd_t *= pmd, unsigned long addr, in =20 if (pte_none(ptep_get(pte))) { pte_t entry; + void *p =3D vmemmap_alloc_pte(pfn, node, altmap); =20 - if (ptpfn =3D=3D (unsigned long)-1) { - void *p =3D vmemmap_alloc_pte(pfn, node, altmap); - - if (!p) - return NULL; - ptpfn =3D PHYS_PFN(__pa(p)); - } else { - /* - * When a PTE/PMD entry is freed from the init_mm - * there's a free_pages() call to this page allocated - * above. Thus this get_page() is paired with the - * put_page_testzero() on the freeing path. - * This can only called by certain ZONE_DEVICE path, - * and through vmemmap_populate_compound_pages() when - * slab is available. - */ - if (slab_is_available()) - get_page(pfn_to_page(ptpfn)); - } - entry =3D pfn_pte(ptpfn, PAGE_KERNEL); + if (!p) + return NULL; + + entry =3D pfn_pte(PHYS_PFN(__pa(p)), PAGE_KERNEL); set_pte_at(&init_mm, addr, pte, entry); } else if (WARN_ON_ONCE(vmemmap_optimizable_pfn(pfn))) return NULL; --=20 2.54.0 From nobody Fri Sep 25 12:03:21 2026 Received: from mail-pz2-f43.google.com (mail-pz2-f43.google.com [74.125.228.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 365103955DB for ; Sun, 13 Sep 2026 08:40:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288847; cv=none; b=Llcen9uGCr9tjERg3iAZKF0PVGKekgC8ut3aBh52Ljhh86cB2Qr4BaH0Nec0P2xURZKmPXHm2UTSkcG18Pe/k8jbCkoo++xUuvxuiMfmB6PALWzf6zgdd4BoSttdn97W2h33JR3Yj3qb7aM/bn/a2y/vEkDMB+jx4DIAPoBqjhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288847; c=relaxed/simple; bh=axZHqSrdvfRy76XwHi9h5QpvXkgidn9uUExeGXtk0c0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=luYY/lFVFFBuNEnU7vgq0THn0crv3uNclWKDn37PE9en/CkHXbmOBGhlKe9O3dbkwl9rDRnnIr+F7PhO5yNfVpMMNMxIlBiy2j+zRiCNocKL5VkXMYYUe61swe7u4ZyxJZewyStLos+9l4/hxRwuNoXl1+X+YeUKnorXSm90VT4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=U8dkuScI; arc=none smtp.client-ip=74.125.228.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="U8dkuScI" Received: by mail-pz2-f43.google.com with SMTP id d2e1a72fcca58-85469e25400so816392b3a.0 for ; Sun, 13 Sep 2026 01:40:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1789288844; x=1789893644; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ML0t01Bj4qeBUEzdqhHtr19Sc8eC1B+HcCN0p8hsXSo=; b=U8dkuScIoeFonvMz4wtjvThxd+uSTMNk7/QPExIl0KFUWvwGNbfpl5ZjXCLoCfEEYs +HDqYf/mDv7jsrBM58g11S+n7tHqhAaUg2HfmrMdT7QZKtwiG5z4WFfnhsF/TOzBEJnd nr5GKCbF2Dsl9hCmOShtgSsFzhygOXSL5rWBiJbExlmBF0gov3gLtoLCpMBhTkzeaW7N FqIH757umH0o+HvWhAgud50mG7kxx43YjccQ4oI3KSkdGdRURQeDjbE+js2/eh4DBFOj UDIuCDiQsc+lO0bGtR5SDk8HpPU/ewS17BvQIpHSy3HCUEr+LwANJsrloCdagBiaRX7p bu9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789288844; x=1789893644; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ML0t01Bj4qeBUEzdqhHtr19Sc8eC1B+HcCN0p8hsXSo=; b=dJWCPSBEEz1Fo8pGbNN8RJQrGeNgx7Y1i4QwpSkANtD3XDlzPcbS9i+cIkMkxQ83B7 wrpo/UTuVbiIxn3pSgBWeiqO/OCRjNVcQBZA4OweKrMaVGuZV4rrr4lrHiYMOmr5hyJv IBG3kFRhBckGscoeiAOR4+PW5OI5uY8wOl4pjlWgZQNECRR5RI9/QC3d84G4STx1z11c DQpg1GuUgPqfxcmIQxHc8y+NGHHI2hvBOGsHDBmY28RwJsznzjzOv7jyKC3v9mAUgi7d OHdo0SiKaigdq/XN4ehkX0lJBhTeKt4oXkrug2YYYSW/nzRdtHkzvF2m9DsDC+fi2D68 RYpQ== X-Forwarded-Encrypted: i=1; AKwUvBygDNXC6b9XjmXiTP2EfX4iL5aT+gy1j5am1Ur6oeNiaEjIY6H6mhx01doGiJ1YwxFPM4WBuQ6hflr5XU0=@vger.kernel.org X-Gm-Message-State: AFuF++mPITtSypm9beBVh3V6Vcw2OMVwgCC68nhl81/+ySMfComWdAiy apsPi4xqkgznhE2qSFK1Iq3x4cS7+4/LCfXo8c3keX/VZCiar4kUonEQmPEsDyJNstM= X-Gm-Gg: AYBFou1fXmZGh3kJV4/RKmnOOmj9klbvDM9cLtgA1nMcriKO5URzML0lYzuVXYENyCz jB08LAtU/wtqHRrpw06KPkdX2dnAsOB29BGHNbtFpqFobf/1kDqggQUrq3jaoPsYeTibynOqMV4 UC7X9vC0u1CNgo5WkwxDrtbI5XZ+/5RGpdDcuE82oDMCiVdl5SzrbB28vffQoXPNP0uZoOonNu2 GDLvhBPAd5id3T71LT3u24DQ0QzM0ZCWUbD6jtjijxzfuKy/WKZoTxJQLzzg6/n9JJEObkUQBBV yDwgqSc1Q/ThuAIcM6PUfRZOKQrS4vgOePSCIMVIVXGe2f+sbvCMCCTPcJYAR7qgNqtB2zGplhL e4sdUyKSdSm/xSAq2DJdFc5emi409LCqmcFdqK+XdjHnpDKJul8PFHd0v1QccVqNNRSG0NT9uM8 YoEhxDQudkdYrd+N8qoTVNYsn5eSZT3BaZUI2G/hF8FaQM+v/DU//1/sX8QLqWdFtoykc27tAVY bLFZJDux8iIoT4kYe+mFpi/FvA= X-Received: by 2002:a05:6a00:8c6:b0:845:e440:d0ca with SMTP id d2e1a72fcca58-86b2fe25315mr17990526b3a.8.1789288844473; Sun, 13 Sep 2026 01:40:44 -0700 (PDT) Received: from G6L4RL2QG9 ([2409:8a00:1832:cf0:5137:990:100e:cc7e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b29cbb0d3sm3070531b3a.42.2026.09.13.01.40.35 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 01:40:44 -0700 (PDT) From: Muchun Song To: Madhavan Srinivasan , Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Michael Ellerman , Nicholas Piggin , Christophe Leroy , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Qi Zheng , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 3/6] mm/sparse-vmemmap: drop Device DAX-specific population path Date: Sun, 13 Sep 2026 16:37:31 +0800 Message-ID: <20260913083734.86802-4-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260913083734.86802-1-songmuchun@bytedance.com> References: <20260913083734.86802-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The common vmemmap path selects the shared page for optimized mappings itself, so Device DAX no longer needs vmemmap_populate_compound_pages() to find a shared tail page and pass its backing PFN through the generic population helpers. Remove the Device DAX-specific population path and let section memmap population always use vmemmap_populate(). The powerpc retains an architecture-specific compound-page implementation, so select it directly from radix__vmemmap_populate() for optimizable sections. Signed-off-by: Muchun Song Acked-by: Qi Zheng --- arch/powerpc/mm/book3s64/radix_pgtable.c | 3 + mm/mm_init.c | 2 +- mm/sparse-vmemmap.c | 71 +----------------------- 3 files changed, 5 insertions(+), 71 deletions(-) diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/boo= k3s64/radix_pgtable.c index 9ca28e4a610a..cb72d9ccf747 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -1122,7 +1122,10 @@ int __meminit radix__vmemmap_populate(unsigned long = start, unsigned long end, in pud_t *pud; pmd_t *pmd; pte_t *pte; + unsigned long pfn =3D page_to_pfn((struct page *)start); =20 + if (section_vmemmap_optimizable(__pfn_to_section(pfn))) + return vmemmap_populate_compound_pages(pfn, start, end, node, NULL); /* * If altmap is present, Make sure we align the start vmemmap addr * to PAGE_SIZE so that we calculate the correct start_pfn in diff --git a/mm/mm_init.c b/mm/mm_init.c index 56bb4567a494..1650d6bc1211 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1046,7 +1046,7 @@ static void zone_device_page_init_from_template(struc= t page *page, * initialize is a lot smaller that the total amount of struct pages being * mapped. This is a paired / mild layering violation with explicit knowle= dge * of how the sparse_vmemmap internals handle compound pages in the lack - * of an altmap. See vmemmap_populate_compound_pages(). + * of an altmap. */ static inline unsigned long compound_nr_pages(unsigned long pfn, struct dev_pagemap *pgmap) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index e83821768c12..028f844c90f5 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -454,71 +454,6 @@ int __meminit vmemmap_populate_hugepages(unsigned long= start, unsigned long end, return 0; } =20 -#ifndef vmemmap_populate_compound_pages -/* - * For compound pages bigger than section size (e.g. x86 1G compound - * pages with 2M subsection size) fill the rest of sections as tail - * pages. - * - * Note that memremap_pages() resets @nr_range value and will increment - * it after each range successful onlining. Thus the value or @nr_range - * at section memmap populate corresponds to the in-progress range - * being onlined here. - */ -static bool __meminit reuse_compound_section(unsigned long start_pfn, - struct dev_pagemap *pgmap) -{ - unsigned long nr_pages =3D pgmap_vmemmap_nr(pgmap); - unsigned long offset =3D start_pfn - - PHYS_PFN(pgmap->ranges[pgmap->nr_range].start); - - return !IS_ALIGNED(offset, nr_pages) && nr_pages > PAGES_PER_SUBSECTION; -} - -static int __meminit vmemmap_populate_compound_pages(unsigned long start_p= fn, - unsigned long start, - unsigned long end, int node, - struct dev_pagemap *pgmap) -{ - unsigned long size, addr; - pte_t *pte; - int rc; - struct page *page; - unsigned int order =3D pfn_to_section_compound_order(start_pfn); - - page =3D vmemmap_shared_tail_page(order, device_zone(node)); - if (!page) - return -ENOMEM; - - if (reuse_compound_section(start_pfn, pgmap)) - return vmemmap_populate_range(start, end, node, NULL, - page_to_pfn(page)); - - size =3D min(end - start, (1UL << order) * sizeof(struct page)); - for (addr =3D start; addr < end; addr +=3D size) { - unsigned long next, last =3D addr + size; - - /* Populate the head page vmemmap page */ - pte =3D vmemmap_populate_address(addr, node, NULL, -1); - if (!pte) - return -ENOMEM; - - /* - * Reuse the shared page for the rest of tail pages - * See layout diagram in Documentation/mm/vmemmap_dedup.rst - */ - next =3D addr + PAGE_SIZE; - rc =3D vmemmap_populate_range(next, last, node, NULL, - page_to_pfn(page)); - if (rc) - return -ENOMEM; - } - - return 0; -} - -#endif - struct page * __meminit __populate_section_memmap(unsigned long pfn, unsigned long nr_pages, int nid, struct vmem_altmap *altmap, struct dev_pagemap *pgmap) @@ -531,11 +466,7 @@ struct page * __meminit __populate_section_memmap(unsi= gned long pfn, !IS_ALIGNED(nr_pages, PAGES_PER_SUBSECTION))) return NULL; =20 - if (pgmap && section_vmemmap_optimizable(__pfn_to_section(pfn))) - r =3D vmemmap_populate_compound_pages(pfn, start, end, nid, pgmap); - else - r =3D vmemmap_populate(start, end, nid, altmap); - + r =3D vmemmap_populate(start, end, nid, altmap); if (r < 0) return NULL; =20 --=20 2.54.0 From nobody Fri Sep 25 12:03:21 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9E83399899 for ; Sun, 13 Sep 2026 08:40:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288856; cv=none; b=T/etfIzacb8rQ2VAyJyFHawiLIWahDPfNEeQbjd8TOIGSOPcNcUzjX49SYewrsiqUybvSUVpYMZLDXkaoHyxZCmI8OPMuaOYv5kuf2OPEJ2XHACxAfo8F+mB8Tnk12xZpKFSC03E3b7M9grBBHSSYoNr4gGb0tcjNlhG4wugVCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288856; c=relaxed/simple; bh=/8FgzHcTZ/464WLDLVtJ3/FReb0i6ycqD70HvC5SVjA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MgCvm1ODvWjIyhi5lZfOJ3qy06qe96jdpoIxCtyvx9INot+eealFxYUXWGgGZfT9bhd5icMS792NEEAspXMy5T74o17aY4d51VvIKbBMnbzmxH4gEAxbhgQH7Eq5i5uQG+7Po681xllVK9tB4IzI8/BNxAQ/KtoLkhWp2Dpekns= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=Ng1TavRG; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="Ng1TavRG" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-8558c0b26a8so1673491b3a.3 for ; Sun, 13 Sep 2026 01:40:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1789288854; x=1789893654; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kHX0G+rfBcj3IGbPNWjgGAyawAROo7044LYJmYZedOU=; b=Ng1TavRGn0VMfqPz+E6W3dTa8vriED6Ndnlc0C4W1Z5xCah9KYlwzFMprBKGSjPDQn 0fSGEzO2Gp+jx63lXx119AzeodA6Q7uylZUQYAtqPTmpwdsixbGyDykd7GnjAbldkOVB LNEN+NrxYdsbvTxrcXHtNwg27+cT1trds58cUeGjTEgX8lEHMehKEA0SQFanDEJnJBEa 0i7fTdMTlugrQr+0X+s6KSKn+DTEV05+k8v8v5dKot48NOZTFLJqhKcPWLCHvrscl0Vk K/wC2GKuwb9yjnRDRGNY7B7Niv480853punZuQ+1sa557/k+tIPQEcH5ma9QoFsvHen4 NzOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789288854; x=1789893654; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kHX0G+rfBcj3IGbPNWjgGAyawAROo7044LYJmYZedOU=; b=Pd6BDB2JCR3WwckLlvWexhg0fEdY9qzpJnUlbRPpb/uQZPffx5hPzWezHu8fr5H4ck bLE1n+H9sVG8hNNV5SEO7+xHzzCh0kEog1smpahG7zIntnv720zMcx7jCuJP3UZ9xV0n RnAq9cWqzK89J3gcJeKbKFY+PI/aXuIWh47cwp9AkDdFU6K3RdWBOPUby/F/7xhM7MUS jSzu/KYqHCFLHBs3fGp+6JQ7wFGsFAogNTHmUQUUZKTAwMY0pCnbiBgRFHCoaw0Z+UXA WUqhNK4xQmutj3xSnWLP8QIq0hAOrUosiiHuJG+ogRtNkzfl3MF6jfblMXNnt+g2evYD amqA== X-Forwarded-Encrypted: i=1; AKwUvBxHEZ624bWLxOZQRv5DRjdopdTyOOrDCi7Ue0iwM6NzIhBv5q5KCDY8yW3a/aqUDjvP5kvHfqz9G+iTVwI=@vger.kernel.org X-Gm-Message-State: AFuF++mp1ePYLE4/GDEwIQPyCDf2l1KmgvJxD6Tgqw84904Lln+PoQtW cwGj2nczw3sNA2u6h1jLLz1WX3QQpW53gW6Bxf3MzSrw51MzGJme8NmXIAJzpW7TNms= X-Gm-Gg: AYBFou1L/XQmpHNCzY/l0xUBuBv6niYJj28+c5tqmhoc8rFIgG68RnHhOfZf8Xj16dN 4fl2bLEjFvEkyUu7ojmu8MohoFtnU27KqDWVF8HCnPMhSo74wA1z2FYJMoUuXLeN0K3CEz70pfq DcGknNwHzQbPjgZiwqrrf6tFAYC57QOOeaGNos8c/4SxU9KlVTzX0VDbV3ampBv8+6WTsNsnGf0 5snYOFrhHgTLRj7xrKstA/ULk7i7uMvnqO/x50VIEmVNXOG9feM8HNi/dVcgutcQdxllH7W2JgI erCD+LVWIl4/UU2szYwQNDFZnIecsV0HuKwcpwl7ZyHGCtK4lzmiorjE8YLHDesanZAmUJ5uFJy SMXR2oRBRyyfY4S/epNnNYdIX/D7gDROBgTaaM6AUZKy/hLQYnSeDCp11kZgg6fNXZfjR+uStnR 9T5Aw3X1kJ2OrFTXUfi3aeTrQAcLVMB2zrIqiOy0LQE65XgXAmH6BqKD1U04hP1lasbNiS2HDQV 3ZM3jpwqhoxqxVufEIidSJJE8s= X-Received: by 2002:aa7:9304:0:b0:86a:9be:6bf3 with SMTP id d2e1a72fcca58-86b31704588mr20617548b3a.23.1789288853781; Sun, 13 Sep 2026 01:40:53 -0700 (PDT) Received: from G6L4RL2QG9 ([2409:8a00:1832:cf0:5137:990:100e:cc7e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b29cbb0d3sm3070531b3a.42.2026.09.13.01.40.45 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 01:40:53 -0700 (PDT) From: Muchun Song To: Madhavan Srinivasan , Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Michael Ellerman , Nicholas Piggin , Christophe Leroy , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Qi Zheng , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 4/6] mm/sparse-vmemmap: remove the unused ptpfn argument Date: Sun, 13 Sep 2026 16:37:32 +0800 Message-ID: <20260913083734.86802-5-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260913083734.86802-1-songmuchun@bytedance.com> References: <20260913083734.86802-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" vmemmap_pte_populate() no longer uses ptpfn as an input. Drop the argument to simplify the code. Signed-off-by: Muchun Song Acked-by: Qi Zheng --- mm/sparse-vmemmap.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 028f844c90f5..8b4904d9c65e 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -233,7 +233,7 @@ static __meminit void *vmemmap_alloc_pte(unsigned long = pfn, int node, } =20 static pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long ad= dr, int node, - struct vmem_altmap *altmap, unsigned long ptpfn) + struct vmem_altmap *altmap) { pte_t *pte =3D pte_offset_kernel(pmd, addr); unsigned long pfn =3D page_to_pfn((struct page *)addr); @@ -304,8 +304,7 @@ static pgd_t * __meminit vmemmap_pgd_populate(unsigned = long addr, int node) } =20 static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int = node, - struct vmem_altmap *altmap, - unsigned long ptpfn) + struct vmem_altmap *altmap) { pgd_t *pgd; p4d_t *p4d; @@ -325,7 +324,7 @@ static pte_t * __meminit vmemmap_populate_address(unsig= ned long addr, int node, pmd =3D vmemmap_pmd_populate(pud, addr, node); if (!pmd) return NULL; - pte =3D vmemmap_pte_populate(pmd, addr, node, altmap, ptpfn); + pte =3D vmemmap_pte_populate(pmd, addr, node, altmap); if (!pte) return NULL; vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); @@ -335,15 +334,13 @@ static pte_t * __meminit vmemmap_populate_address(uns= igned long addr, int node, =20 static int __meminit vmemmap_populate_range(unsigned long start, unsigned long end, int node, - struct vmem_altmap *altmap, - unsigned long ptpfn) + struct vmem_altmap *altmap) { unsigned long addr =3D start; pte_t *pte; =20 for (; addr < end; addr +=3D PAGE_SIZE) { - pte =3D vmemmap_populate_address(addr, node, altmap, - ptpfn); + pte =3D vmemmap_populate_address(addr, node, altmap); if (!pte) return -ENOMEM; } @@ -354,7 +351,7 @@ static int __meminit vmemmap_populate_range(unsigned lo= ng start, int __meminit vmemmap_populate_basepages(unsigned long start, unsigned lon= g end, int node, struct vmem_altmap *altmap) { - return vmemmap_populate_range(start, end, node, altmap, -1); + return vmemmap_populate_range(start, end, node, altmap); } =20 /* --=20 2.54.0 From nobody Fri Sep 25 12:03:21 2026 Received: from mail-pz2-f12.google.com (mail-pz2-f12.google.com [74.125.228.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE1863955DB for ; Sun, 13 Sep 2026 08:41:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288865; cv=none; b=Lwl3zpfJxNot4JASDdeR5GCdw0zq/2iYoz1dI8f4Aynu3PO/HLjiJGfxuSl5webMNwjeWU+J4xSsewgc/dK6XH7EqQ/C/aUA+s/aqJoEK8u5t7Y+ytcWkaG1nDAOJKSCh3dwstcnhU+meaj+PN40vIaZ35MJeBHFW5fqdudmmj0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288865; c=relaxed/simple; bh=MozHaV3HD0QD/OQbQsEZPaTLQzwYGseimf9ZDaMenIc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fQVLea4T0WauxeS+eyiVIdEVQfs0tYcoESxW9GGaNdBMfTtXlgZgbiuoexwQdasizEl0Axr1Xm/0qlp08AgstosEgzooURWTZotCQJIh22XdzEqI0izr0ybYmyYKPGsANVI/lRKA3abvpc4yMtk49OuC4KELZidYoY1o8elC0yI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=gtdyzP9w; arc=none smtp.client-ip=74.125.228.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="gtdyzP9w" Received: by mail-pz2-f12.google.com with SMTP id d2e1a72fcca58-85469e2254dso113783b3a.1 for ; Sun, 13 Sep 2026 01:41:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1789288863; x=1789893663; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NjqOF/lS/S8Rdm36whah2xYfroMiTrYUBQ+49bShAw0=; b=gtdyzP9wDJzfOw3E4TWVcG4GrP/YDfZlD44pU0GFQSpx0+Pnqcfq4BdQR0TJBewlOe hl+fgHKWi5x/yrvH8ygi8AUsUNXOXuynmne7Oudl37I7d9IfP3crchxv2lHWWHT4reL7 UbJJxqlmkHER7P/VytJltS3naSuwVyS8T3PDxobwMlPXFkaEaK0n1Zx157g1jaRXEJc4 JvCZy4M0RP+xC22CL9M+3cwCXc2fsgZ/NH8toMIVM9dQdrAcWZCx7+wlX24o+lHjOMvD 4OmUGSXCnlOZ/KrYJBM37QRX8hinqJsdm0bCaDrrVw2hCwhGvPrcgPlKLSaT+hQOFUQc wQzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789288863; x=1789893663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NjqOF/lS/S8Rdm36whah2xYfroMiTrYUBQ+49bShAw0=; b=j5QumrDYhuzVQnFyiuM4N3WKQZtZjxI1Bbf2+MMoQ2qBQU92Z/MizLMHxlsU4yy3x/ DDpvHBaqaYj/7cTIgkZM1omqli0W3PcX8qTZRnorPHJdIPoBOkk2yOhtRptSLveaw2zB KFLvQnapak3oLe4a1oJHJR4H+2EBog1jM1VY01lKNDJQ1ZOCKk7BqDg8vkJJp0fWxW6K kFV5lFCtLXWk9ASaH7LCH+TJGhctgVGjfnbAZA/2FcLaUMU03/Or4b9uVirOE4OIDnZ1 nP39X9eqyAWlSmppZeyoNPubhE3OQdZC3MjF2wbl6jtObDqaJA8UUngVNgLw493QLzet Vzsw== X-Forwarded-Encrypted: i=1; AKwUvBzk9zltNtUXgAYtWaoUDYlnGj71H2Vk3a4pVpTI7OcMPf1JJc+VNKzbienJqIuuV25LxH+IvBT6NNgfc58=@vger.kernel.org X-Gm-Message-State: AFuF++k2a1OxJwO+UcetAx8+O5Q40APVZUoWBeHbSaur+vrPNXXsRyCo b39TCV2KErQSY15+OXp+pkwANtgR96aqjv0lMrDlnv6vxFG3fGw9a0+889ISF63R3xQ= X-Gm-Gg: AYBFou20mJ91H2Wx3WZauRcbBXp4nrSYq1bszsncgLIROTsT0Z2OSM0eKFutzgCqLA+ prB2xQwEkeI5DB3UE+jwhbOWDpbhz8epMvOi0nnP50ZHbtqd6u9/Me8wx5TmkJf43sHgYvKTquN dWBiw3/aF5XlQ2zdVvaYKPCXUc0fz43SJqJl78VseHqiFO13zjNjHAf8PtBgeMeHXzMhPjGVnrT kyVl2gw4bBcS/QxOM8dc6QclrKOGDnSwVXY4XEq82xYEUm602J9VMaxHwrHBu6kbS+YcIkjdP+w NXCvmgW3RVa7YhwzBW0lNN2kx030P8vFczLs0UHKOaYF+WP16285B6RuQGk0AiNRkZpEKT9CPlg sgd9ohu9nI9GxidoiDy1rgug0N2AhTWLQzP1lM/HSGE279r8pVFKdgeP45XQqMjCc8iJfXKQE0L 11JfLeDhh1986mhphxwhQls2S09th2SbnLGYw576hXMSC8Dyl23CzI8T2AvcoWpO8Aag8Qu8nBP GgiZ/R9XOtPZsAau8OrYIX9EYA= X-Received: by 2002:a05:6a00:428e:b0:851:8bde:7861 with SMTP id d2e1a72fcca58-86e2a4c9a44mr1541510b3a.1.1789288863105; Sun, 13 Sep 2026 01:41:03 -0700 (PDT) Received: from G6L4RL2QG9 ([2409:8a00:1832:cf0:5137:990:100e:cc7e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b29cbb0d3sm3070531b3a.42.2026.09.13.01.40.54 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 01:41:02 -0700 (PDT) From: Muchun Song To: Madhavan Srinivasan , Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Michael Ellerman , Nicholas Piggin , Christophe Leroy , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Qi Zheng , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 5/6] powerpc/mm: make vmemmap_populate_compound_pages() static Date: Sun, 13 Sep 2026 16:37:33 +0800 Message-ID: <20260913083734.86802-6-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260913083734.86802-1-songmuchun@bytedance.com> References: <20260913083734.86802-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" vmemmap_populate_compound_pages() is no longer used outside radix_pgtable.c. Make it static and drop the unused dev_pagemap argument from its only remaining caller to simplify the code. Signed-off-by: Muchun Song Acked-by: Qi Zheng --- arch/powerpc/include/asm/book3s/64/radix.h | 6 ------ arch/powerpc/mm/book3s64/radix_pgtable.c | 13 +++++++------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/incl= ude/asm/book3s/64/radix.h index da954e779744..8452a2714cb1 100644 --- a/arch/powerpc/include/asm/book3s/64/radix.h +++ b/arch/powerpc/include/asm/book3s/64/radix.h @@ -356,11 +356,5 @@ int radix__remove_section_mapping(unsigned long start,= unsigned long end); #define vmemmap_can_optimize vmemmap_can_optimize bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *= pgmap); #endif - -#define vmemmap_populate_compound_pages vmemmap_populate_compound_pages -int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn, - unsigned long start, - unsigned long end, int node, - struct dev_pagemap *pgmap); #endif /* __ASSEMBLER__ */ #endif diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/boo= k3s64/radix_pgtable.c index cb72d9ccf747..ee121cb4fc12 100644 --- a/arch/powerpc/mm/book3s64/radix_pgtable.c +++ b/arch/powerpc/mm/book3s64/radix_pgtable.c @@ -1110,7 +1110,9 @@ static inline pte_t *vmemmap_pte_alloc(pmd_t *pmdp, i= nt node, return pte_offset_kernel(pmdp, address); } =20 - +static int __meminit vmemmap_populate_compound_pages(unsigned long start_p= fn, + unsigned long start, + unsigned long end, int node); =20 int __meminit radix__vmemmap_populate(unsigned long start, unsigned long e= nd, int node, struct vmem_altmap *altmap) @@ -1125,7 +1127,7 @@ int __meminit radix__vmemmap_populate(unsigned long s= tart, unsigned long end, in unsigned long pfn =3D page_to_pfn((struct page *)start); =20 if (section_vmemmap_optimizable(__pfn_to_section(pfn))) - return vmemmap_populate_compound_pages(pfn, start, end, node, NULL); + return vmemmap_populate_compound_pages(pfn, start, end, node); /* * If altmap is present, Make sure we align the start vmemmap addr * to PAGE_SIZE so that we calculate the correct start_pfn in @@ -1221,10 +1223,9 @@ int __meminit radix__vmemmap_populate(unsigned long = start, unsigned long end, in return 0; } =20 -int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn, - unsigned long start, - unsigned long end, int node, - struct dev_pagemap *pgmap) +static int __meminit vmemmap_populate_compound_pages(unsigned long start_p= fn, + unsigned long start, + unsigned long end, int node) { /* * we want to map things as base page size mapping so that --=20 2.54.0 From nobody Fri Sep 25 12:03:21 2026 Received: from mail-pz2-f43.google.com (mail-pz2-f43.google.com [74.125.228.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 39B5D399351 for ; Sun, 13 Sep 2026 08:41:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288875; cv=none; b=gOjDOjuOtIHkYoyvO7e23dp5q1pZU0spmlZIjrOSRKftDDW/+QnRh9TKnvJWo9HV3ylmQqi0cRA6qgnROUf1OSfuawyl1trds9dV93fTPZW1eLF7gG3zfgmzJFI/g+tdKlPAZKfGjuPaD/m4mSSAQyD8/FpgjM97MSmBoDlTCZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789288875; c=relaxed/simple; bh=6TPn1RE4+X8OQTNKxviJn2Ieeji6pdzLzuxMJDdolK4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nKFcNWMAczmvsLREpE4b6EZSZV1JntNSiXd5hu8IE0MtnhepdODO2gkuMVshbVfCmKStJheK9EIM0ibS8eS6I1/0d5LH9A7wmhxqsmY9Imy4lBhncCmURgbkPcgXqgQePVVZHbryp6+DdbIGmZuo3RBFr3w8F/xvvVqx9sFeBqs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=GBknKjmB; arc=none smtp.client-ip=74.125.228.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="GBknKjmB" Received: by mail-pz2-f43.google.com with SMTP id d2e1a72fcca58-85469e25187so826678b3a.2 for ; Sun, 13 Sep 2026 01:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1789288873; x=1789893673; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jabfOFZH7nclzlLV4JN+2R4So1RYw+NkC6onyGlhulM=; b=GBknKjmB/bEPP5a/lKGy6ldYIN8osUdzNy7mGk6vsbGmUfgDBl1KeiFYVca+CXIajo fp6HuCta8QARxFK8gd69iAUnI9RVZIvWvkf4QbA1Hcx6oTddV96gYN862G/7ik4nxyyt iKhVpBLUZHitBhoi7nLTKXEJNR6Rv6odyFmZ6Go0lFFJJXyW1sMbthvNXoCFxLb3rAqP XM43eKhgQPknLKK8qAkZyseKlVE5GgycPBtigvnK0HdXKWcK1OuORH8/0yZyJJqn6qdv tfgxrveTmrOeYu1QutIyvXUWUDXAz2PV7o7KjLleoADdBbqRMjcn2S7Y/R5bjmZ48Dg/ TXog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789288873; x=1789893673; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jabfOFZH7nclzlLV4JN+2R4So1RYw+NkC6onyGlhulM=; b=TpQYM+NSVvy9CH/u9up6SQLc5uZLAoKTIJ/UFoWt60bS5p78w7CgQ+8MFFNTOvrtbT vZTNp02nzuEc6xhTK4gJMIRHuQwNQnPUr4EMEt/4qd09Xul+t4x2cPB0dULs1jui9slC AwBYTY8wh1O2ioIQs7zcU51q51BCjBBw9lEf8AC7Q15FR36TzsDBdPwk+1Vka1nEQA1B yfj10D783w5/5X70zfyQzvx1G5X3edGFjHdPxL7lqNyP3GA07/ecYwBD0INbXU2pn/Lx Y6vasT0g4PVJRqv3Bwpvtq6orOZoLp1MWc/IQ6+aoRLv3f7EPmQSjOBUzH827+EgbMjG vQjQ== X-Forwarded-Encrypted: i=1; AKwUvBz/wSoVhh1pcyD8UGHX6zwA9lEUjAMMuGi3xqPAmzfFjdjuugdi509xyZzudO2aX+PmZvl6qwXlw4kWdXM=@vger.kernel.org X-Gm-Message-State: AFuF++lO4B7n1N3nt/g2E/Ox63fLyghKtyb887x8T4/q1uQbL5LoLJR9 Y+qi/k4ish5geWMqML0XLmW5Kl0vx0D4UOIkbepcBZgVK5daqTjdLcINFrE/VXa82oE= X-Gm-Gg: AYBFou2pLD1EgmVBygFqOixETNgVEkjCtPvNa5qmYEBIAx+XaYHqxWhdo03Kn6uH02S w3WA4rpsBMdZbDWScUqcIbNhHHeP/Ci9117qo0Q0ySyc1FI6fwi7IKTvfgD5BxT3aPU7VS1XPvQ YC2NDtvTfXbhZak9rkdQusbzaZ42oHhCiZsBKu7/GoqT+ujrTr/GIMykrQAxcJfc2raJfLyct8X 4EWpuJXdgtdsiYxiQ6V/XXzMxEN7yxJDHmuPUkbEh729RuwWotNjHMFfGGP4Y/bbqmJAGad6vOR NUVbiZxQtMDt6dG9N1Krj5Bdq2LO8q0co4Oo5V7Sfh4yQ4DtAmgY5MocqgcccXBAlCsVIQ3vnPW GHIAGaa+whnErc1TSNKKj4vtKVs/FjIMJcjymxA94nBZSZTwwo+pi8pofpUk+kOnWNVTGuczXF3 bHM9PKowxL2DUlveHOwoma9cXw8BJfobE94ScytckjgP/hVpKrU0h6X8DVp2xU1nnGoJsb8J7jc MfByq6KXfY48eWHqDNi96nWbo4= X-Received: by 2002:a05:6a00:c1c6:20b0:86c:52fd:fbdf with SMTP id d2e1a72fcca58-86c52fe0a64mr9440575b3a.20.1789288873401; Sun, 13 Sep 2026 01:41:13 -0700 (PDT) Received: from G6L4RL2QG9 ([2409:8a00:1832:cf0:5137:990:100e:cc7e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-86b29cbb0d3sm3070531b3a.42.2026.09.13.01.41.03 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 13 Sep 2026 01:41:12 -0700 (PDT) From: Muchun Song To: Madhavan Srinivasan , Mike Rapoport , Andrew Morton , David Hildenbrand Cc: Michael Ellerman , Nicholas Piggin , Christophe Leroy , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Qi Zheng , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 6/6] mm/sparse-vmemmap: open-code vmemmap_populate_address() Date: Sun, 13 Sep 2026 16:37:34 +0800 Message-ID: <20260913083734.86802-7-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260913083734.86802-1-songmuchun@bytedance.com> References: <20260913083734.86802-1-songmuchun@bytedance.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" vmemmap_populate_address() no longer has any callers that need the returned PTE. Its only remaining user, vmemmap_populate_range(), only checks whether population succeeded. Open-code vmemmap_populate_address() directly in vmemmap_populate_basepages(), remove the now-redundant range helper, and return -ENOMEM directly on failure. Signed-off-by: Muchun Song Acked-by: Qi Zheng --- mm/sparse-vmemmap.c | 54 ++++++++++++++------------------------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 8b4904d9c65e..5e0e30c77431 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -303,8 +303,8 @@ static pgd_t * __meminit vmemmap_pgd_populate(unsigned = long addr, int node) return pgd; } =20 -static pte_t * __meminit vmemmap_populate_address(unsigned long addr, int = node, - struct vmem_altmap *altmap) +int __meminit vmemmap_populate_basepages(unsigned long start, unsigned lon= g end, + int node, struct vmem_altmap *altmap) { pgd_t *pgd; p4d_t *p4d; @@ -312,48 +312,28 @@ static pte_t * __meminit vmemmap_populate_address(uns= igned long addr, int node, pmd_t *pmd; pte_t *pte; =20 - pgd =3D vmemmap_pgd_populate(addr, node); - if (!pgd) - return NULL; - p4d =3D vmemmap_p4d_populate(pgd, addr, node); - if (!p4d) - return NULL; - pud =3D vmemmap_pud_populate(p4d, addr, node); - if (!pud) - return NULL; - pmd =3D vmemmap_pmd_populate(pud, addr, node); - if (!pmd) - return NULL; - pte =3D vmemmap_pte_populate(pmd, addr, node, altmap); - if (!pte) - return NULL; - vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); - - return pte; -} - -static int __meminit vmemmap_populate_range(unsigned long start, - unsigned long end, int node, - struct vmem_altmap *altmap) -{ - unsigned long addr =3D start; - pte_t *pte; - - for (; addr < end; addr +=3D PAGE_SIZE) { - pte =3D vmemmap_populate_address(addr, node, altmap); + for (unsigned long addr =3D start; addr < end; addr +=3D PAGE_SIZE) { + pgd =3D vmemmap_pgd_populate(addr, node); + if (!pgd) + return -ENOMEM; + p4d =3D vmemmap_p4d_populate(pgd, addr, node); + if (!p4d) + return -ENOMEM; + pud =3D vmemmap_pud_populate(p4d, addr, node); + if (!pud) + return -ENOMEM; + pmd =3D vmemmap_pmd_populate(pud, addr, node); + if (!pmd) + return -ENOMEM; + pte =3D vmemmap_pte_populate(pmd, addr, node, altmap); if (!pte) return -ENOMEM; + vmemmap_verify(pte, node, addr, addr + PAGE_SIZE); } =20 return 0; } =20 -int __meminit vmemmap_populate_basepages(unsigned long start, unsigned lon= g end, - int node, struct vmem_altmap *altmap) -{ - return vmemmap_populate_range(start, end, node, altmap); -} - /* * Write protect the mirrored tail page structs for HVO. This will be * called from the hugetlb code when gathering and initializing the --=20 2.54.0