From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B1C83C456B; Mon, 21 Sep 2026 19:59:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020764; cv=none; b=BP1vNRQlwfgjzGuZWk+LmFQ0PTPB0/xaM7zQiTnJVjHmjJ1kruyQaAisg3PmELjT6i18o81RxrggM9kvVCY7UJHbLhkTDnITZWBXBHKx7cuTBjKpgGIjrmuEFQdpwFW3aIT8YVOdvEQHAyBRWWJbLh0coi0jNCwOyUiGFKCxkcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020764; c=relaxed/simple; bh=RDUKgR4Zh55foA1PVaXPqBWcOHxguZt1tds+dCAcB5o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oiiy013jrT7Z9UY2n/TRr2r4qcPtKspMLt7eJh9lJXvdH6T0b5tpsTPt4SBaULK1BsDQD7uCtYv9kszo8j3/s9BDRjZYxEVfYE2y21UAo4IqxA2xuqIEba0iwBqbTkCkyGcIj5Qi26PdG1CGI2AkxTxAHZxqLuUE0bjYEOHgN1U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=goOJO+Ju; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="goOJO+Ju" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 907511F00898; Mon, 21 Sep 2026 19:59:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020762; bh=f3OLDjTedsbgC3rcZhdOQN0X2zBug4ET6xkZFH6DZFY=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=goOJO+JucOQyVJhwBfpMh557Mt7X9EpUqiE/EPsXm4eYLVfpDHY4Sz7us7rwrdmnQ Bfe9PXXPxI2rtkVy5TKC1kpPBhNLS0Dfks+8osZBKG+2uxCn93k+LsvLN55gPfnomd 4HcmAsTeQgH22E7n2fE/ONBJ6/4uD9CmmdAep74u34s6N+wXG4C7Wx7N0YyhxML3nn nHXmHNHxzhBBZCOy63EBsxd4Sq90Vlm7Vfz/L/J2QJTZenlQBdgLulgN1JQQDYH3fP U9RH3bGbIYac9um1zcYtRfW35E3dnGxbfY5n/IBwFi+RPzRAEMMBRrUOaGCqgxviVb B2Z/oHF0sdVVg== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:53 +0200 Subject: [PATCH v2 01/13] mm/sparse: move mem_section init to sparse_extreme_init() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-1-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2075; i=david@kernel.org; h=from:subject:message-id; bh=RDUKgR4Zh55foA1PVaXPqBWcOHxguZt1tds+dCAcB5o=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rQqTbnO8DPl8RKB1sUK0hNk3s8y2fL9/Szpe6K7H Nadqok61FHKwiDGwSArpsgSFHzf4OXLdbXVbnzMMHNYmUCGMHBxCsBEkvwY/kr/UXzOzb2/r9fs yu09Wm8rfa8/a+vamDFbU0OUfd+FlemMDP+jP+p8mDLpZB93zpJFEi3mBRu03Q1VzZ0Fj9xLrq4 tZwIA X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A Let's just avoid another pair of ifdef inside a function. While at it, switch to INTERNODE_CACHE_BYTES by just defining a fallback in cache.h as well, given that the x86 variant already provides one. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) Reviewed-by: Zi Yan --- include/linux/cache.h | 1 + mm/sparse.c | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/linux/cache.h b/include/linux/cache.h index e69768f50d532..b6e857b985bca 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h @@ -89,6 +89,7 @@ */ #ifndef INTERNODE_CACHE_SHIFT #define INTERNODE_CACHE_SHIFT L1_CACHE_SHIFT +#define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT) #endif =20 #if !defined(____cacheline_internodealigned_in_smp) diff --git a/mm/sparse.c b/mm/sparse.c index b75921c622ede..8cd2b06b231ac 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -103,11 +103,22 @@ int __meminit sparse_index_init(unsigned long section= _nr, int nid) =20 return 0; } + +static void __init sparse_extreme_init(void) +{ + const unsigned long size =3D sizeof(struct mem_section *) * NR_SECTION_RO= OTS; + + mem_section =3D memblock_alloc_or_panic(size, INTERNODE_CACHE_BYTES); +} #else /* !SPARSEMEM_EXTREME */ int __meminit sparse_index_init(unsigned long section_nr, int nid) { return 0; } + +static void __init sparse_extreme_init(void) +{ +} #endif =20 /* @@ -196,13 +207,7 @@ void __init sparse_sections_init(void) unsigned long start, end; int i, nid; =20 -#ifdef CONFIG_SPARSEMEM_EXTREME - unsigned long size, align; - - size =3D sizeof(struct mem_section *) * NR_SECTION_ROOTS; - align =3D 1 << (INTERNODE_CACHE_SHIFT); - mem_section =3D memblock_alloc_or_panic(size, align); -#endif + sparse_extreme_init(); =20 for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) memory_present(nid, start, end); --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F350840BCB8; Mon, 21 Sep 2026 19:59:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020779; cv=none; b=EaYZmXHGyCVdUzJ1+WsuripUKVUgwEPLbR7zAeBqP3bk3l9wjzyYi8IMVQe7+SbPVKil6RBDNeVcdPsDKEbg0GevyJVg/NcY7ZCnfuYc6HlhGqa3XUyG4SsciR5QX0YXp8J5Wgp09T3w5X+KIFbBxdIkgTo++CSc8RxQYnkC4zw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020779; c=relaxed/simple; bh=sr/2UUrbiIspfv3UAleZAwxwTqvNNou3addI+WKCBYU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=udkir6QQ2TAp2aFUU6VU79x1GGkSIg/R4DIXc/q4YGYoITOKXrGJh5WIruQ7QtgoUynkNUlkwbOfSWix30m1J5Ok4K8R4jsM4AA7X5YRmAH1hphax0LdgecnmSb0sz4riEJJKGs3eqCRr5M8x+tJZs5D6tPpjtp6TjyC74mJAJ4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Gue45uXD; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Gue45uXD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 809E21F00899; Mon, 21 Sep 2026 19:59:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020773; bh=znuq93Je+7pg29stX/zTy75KNbIkjx5/fhMhp4Iv7CM=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=Gue45uXDlrtsZghs401ZxlvxAFCmKJrKoIl9vhZ6icV0q7WVvfPCHPvy2WCC8yGKx zp+4o8cJXp3NUMtGILz2Um8/Zk5qYS79fV/7v9IEc88LdsMMJnDdjUCqDwNCT+QrId vssN0OshCSc8ydk1Hu+XjoTisNJffkwsomYb8b82J8+2Kx9R2z+anPC9f53PPHBzQE SgSXFYAxitEU2ZO+tm8zMQYwKmz7g0JPJw/VjspV3LnNsdAYikWF4QyPwzbJieyLPA ZPcaV3xjpNoz4dlsRb1tWJLzC7q3u7jQ8lfJnQsgubv0ckAHHFAJS2z3dulC9y+km+ Jruri0AeIi6yg== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:54 +0200 Subject: [PATCH v2 02/13] mm/sparse: refactor sparse_sections_init() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-2-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2850; i=david@kernel.org; h=from:subject:message-id; bh=sr/2UUrbiIspfv3UAleZAwxwTqvNNou3addI+WKCBYU=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rTqtW/P/ZulHPP1677Qrv9fnx+6quA1dRrfxuUGW yLfyqpO7yhlYRDjYJAVU2QJCr5v8PLlutpqNz5mmDmsTCBDGLg4BWAiH9oY/iepyPyyzjMsnin9 sZChKnYDk/IUzjs1kx/N2+usW/97Zi7Db/bbvs8nnVjFomnkv+3TG/bJ8XM/X+75vi7vq0q/ZvQ eZj4A X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A memory_present() really identifies+prepares all early sections so the initialization in sparse_init() can properly iterating them to initialize metadata. Let's just inline memory_present() into sparse_sections_init() and cleaning up the code a bit while at it: make it clear that we are operating on pfns. Note that we call set_section_nid() now only if the section was not already created earlier. Now, there is no more inconsistency between what we (temporarily) store in ms->section_mem_map and what we store in our section->nid array. Acked-by: Oscar Salvador Acked-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- mm/sparse.c | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index 8cd2b06b231ac..2b285653abf1e 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -179,40 +179,33 @@ static inline unsigned long first_present_section_nr(= void) return next_present_section_nr(-1); } =20 -/* Record a memory area against a node. */ -static void __init memory_present(int nid, unsigned long start, unsigned l= ong end) +void __init sparse_sections_init(void) { - unsigned long pfn; + unsigned long pfn, start_pfn, end_pfn; + int i, nid; + + sparse_extreme_init(); =20 - start &=3D PAGE_SECTION_MASK; - mminit_validate_memmodel_limits(&start, &end); - for (pfn =3D start; pfn < end; pfn +=3D PAGES_PER_SECTION) { - unsigned long section_nr =3D pfn_to_section_nr(pfn); - struct mem_section *ms; + for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) { + start_pfn &=3D PAGE_SECTION_MASK; + mminit_validate_memmodel_limits(&start_pfn, &end_pfn); =20 - sparse_index_init(section_nr, nid); - set_section_nid(section_nr, nid); + for (pfn =3D start_pfn; pfn < end_pfn; pfn +=3D PAGES_PER_SECTION) { + unsigned long section_nr =3D pfn_to_section_nr(pfn); + struct mem_section *ms; =20 - ms =3D __nr_to_section(section_nr); - if (!ms->section_mem_map) { + sparse_index_init(section_nr, nid); + ms =3D __nr_to_section(section_nr); + if (ms->section_mem_map) + continue; + + set_section_nid(section_nr, nid); ms->section_mem_map =3D sparse_encode_early_nid(nid) | SECTION_IS_ONLINE; __section_mark_present(ms, section_nr); } } } - -void __init sparse_sections_init(void) -{ - unsigned long start, end; - int i, nid; - - sparse_extreme_init(); - - for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) - memory_present(nid, start, end); -} - #ifndef CONFIG_SPARSEMEM_VMEMMAP struct page __init *__populate_section_memmap(unsigned long pfn, unsigned long nr_pages, int nid, struct vmem_altmap *altmap, --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4FB553EFFC2; Mon, 21 Sep 2026 19:59:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020787; cv=none; b=V9PvtG+B8y2QTS+9Rg6ePbnPxQkBZnQSW3seCymzSYSy/p9YkNoa14YBP/UPbQ58UtbGSlVH8r3hg5zDDVaPuCNdBROj4e27It5xJuCp04hxeuapKSf9aQADKTqOkHInJJye5OD6K93800we1HoF3lFNWJwiX8xH5XEesRnqsYI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020787; c=relaxed/simple; bh=3LdazTbWXikkHaUL3kEHoOoL94yCObwwfPuFbE1hFoY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uTgVIPBEje14mjyvgZf/H8n3lhThua7OY8poOJNjSoqXcFDUSeQFrne9lQXQgcNnMZr1nCqlSZjAFHIVYriZgt4AOF/TKtoiS9mFs3QfDfV/84fvswc7hMHNqMiChiGJ7gx+yZGpJy2WcX/RiKGm2zG+p2pO7GhmRsOe+ACjOjA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aiU691py; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="aiU691py" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BAD141F000FF; Mon, 21 Sep 2026 19:59:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020783; bh=DMtBSn8yOXnXVar79nWZLJEdBKm3qvESfKRbNGf93Xs=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=aiU691pyrUYYyQxU9eU70qvyfBU8JxpmY83EEdT3A/04/6eqGwjXGwdaMTlulVnnf 9HFfooLmHjLrL0gE/kIl2vA1lVlP7vj2TOBdK7Slr35sdJ3fPiZoUYK3Pf3m3P62S0 JC4XZgaDwFcE6sMhmvqcRYR9F5B6CSVLRRsdjLTd4M5SJGc6BrPVNLARqh5yRpEOR2 aXQlz6B7Pxjtfq0dcM2prmQdsj5E66edwcStVbsf8tbBKh/1EQTV4XnxN3cYxJBRHk paxFBqavHzIYpDYbLZBIM1FZs//LAy6gjSZuVytKFapn7niPNpQ2N8X6wqBYT8lsUv 3l4S/s+BAGQkA== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:55 +0200 Subject: [PATCH v2 03/13] mm/sparse: move initialization of section metadata to sparse_metadata_init() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-3-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2577; i=david@kernel.org; h=from:subject:message-id; bh=3LdazTbWXikkHaUL3kEHoOoL94yCObwwfPuFbE1hFoY=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rR+PSAo+0AmduX8rVPz3oSf+Dmlz4n5l4XIlOz4y U6PP5q96ihlYRDjYJAVU2QJCr5v8PLlutpqNz5mmDmsTCBDGLg4BWAiKmsZ/occ77274PbJD6v0 mRKb9fw7RGcvO+l2Re6mxOLm9CdFU5wZ/me/9j3RbrhlwfwTjvzSG5JrMv3bTlisn3dxduFpRYM D0nwA X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A Let's move the code responsible for initializing sparse metadata (usemap, memmap) into a helper. Cleanup the variable while at it (e.g., "map_count"). Drop the rather obvious code comments. No functional change intended. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- mm/sparse.c | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index 2b285653abf1e..71288daeb3665 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -255,38 +255,39 @@ static void __init sparse_init_nid(int nid, unsigned = long pnum_begin, } } =20 +static void __init sparse_metadata_init(void) +{ + unsigned long start_section_nr =3D first_present_section_nr(); + int nid_begin =3D sparse_early_nid(__nr_to_section(start_section_nr)); + unsigned long section_nr, nr_sections =3D 1; + + for_each_present_section_nr(start_section_nr + 1, section_nr) { + const int nid =3D sparse_early_nid(__nr_to_section(section_nr)); + + if (nid =3D=3D nid_begin) { + nr_sections++; + continue; + } + sparse_init_nid(nid_begin, start_section_nr, section_nr, nr_sections); + nid_begin =3D nid; + start_section_nr =3D section_nr; + nr_sections =3D 1; + } + sparse_init_nid(nid_begin, start_section_nr, section_nr, nr_sections); +} + /* * Allocate the accumulated non-linear sections, allocate a mem_map * for each and record the physical to section mapping. */ void __init sparse_init(void) { - unsigned long pnum_end, pnum_begin, map_count =3D 1; - int nid_begin; - if (compound_info_has_mask()) { VM_WARN_ON_ONCE(!IS_ALIGNED((unsigned long) pfn_to_page(0), MAX_FOLIO_VMEMMAP_ALIGN)); } =20 - pnum_begin =3D first_present_section_nr(); - nid_begin =3D sparse_early_nid(__nr_to_section(pnum_begin)); - - for_each_present_section_nr(pnum_begin + 1, pnum_end) { - int nid =3D sparse_early_nid(__nr_to_section(pnum_end)); - - if (nid =3D=3D nid_begin) { - map_count++; - continue; - } - /* Init node with sections in range [pnum_begin, pnum_end) */ - sparse_init_nid(nid_begin, pnum_begin, pnum_end, map_count); - nid_begin =3D nid; - pnum_begin =3D pnum_end; - map_count =3D 1; - } - /* cover the last node */ - sparse_init_nid(nid_begin, pnum_begin, pnum_end, map_count); + sparse_metadata_init(); sparse_init_subsection_map(); vmemmap_populate_print_last(); } --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9D7B413797; Mon, 21 Sep 2026 19:59:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020799; cv=none; b=esLGHHBxy6POu9lmM6DqnMaKJoudhU213GWfTywIoTH5aTG/IUBCrVMrZu4ZNGhS4MJGWKLx5KF5N2hR5L4T0AWA2cRbrYaPu8de8CA/Tk4+BzNDH+T8R5KEpVyBFUHeroI7FrnQR3WqJvjxeWjv65FWg91Sj75mfNX8K5s0ks4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020799; c=relaxed/simple; bh=jRIGnfYse4fXvQGtvRSVJN3HkWBLnWHH94529PFkjgA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nxEq89zEhdoHS9WVebmsVtY7zjMRU8y0/eiO5n9YDR3TA2+NxtTnGwJxyBq0eyqNnSl+r3QGuOVnc0wEabccdsCKDHLh8xfsEy99D3xkdfNMYw/kUmr8MHs205XwdbfW6LrDXYL0i29bHtDI/cxPAY0ybagFjiDqEQoAKekRXcg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=L95Gueio; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="L95Gueio" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AA18B1F00899; Mon, 21 Sep 2026 19:59:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020793; bh=CdS+/4QTYMA6mkMSAisNrxryoW61WoDFfQTO+/5sNFg=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=L95GueiosaZQg0BKiLrbDQ2H76JOpx5XQ1JBgC/3WRgTV1pywD/hQQTFC2hczp9t7 LMcAMhV52doEKKJ4AJbaFqNNQwCzbqlfAzjnxTCgOXC91q8dFTNEXWIb9dKIdV4aBq +GCCxnVLAu8jfyg8d7Yy8ruPPlblSRPcKUZ4oetaeD+rH2oXWwo29MkQiyq3iS1QsZ qH/+dBLdHmdZiWClIDnwrLnkbE9fZHLoD1hq72mRd4Plq5YnZSgrZUy//gjUJ7EOKH 9O/bNQRqIlECpcGhMzppG2nCCP24W+8epB070gor6ECTUmc5+FwG4XEZXEDEOpInQ+ yxJxT/11+hMLw== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:56 +0200 Subject: [PATCH v2 04/13] mm/sparse: rename and cleanup sparse_init_nid() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-4-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3145; i=david@kernel.org; h=from:subject:message-id; bh=jRIGnfYse4fXvQGtvRSVJN3HkWBLnWHH94529PFkjgA=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rSm3gnWi/35I9XhnvDe02Fc7r81Pky0njvXLCrsN PMmuZaPHaUsDGIcDLJiiixBwfcNXr5cV1vtxscMM4eVCWQIAxenAEwk4jUjwxxHpq7rex3tClv4 EzbP7j6U8Upt9ZwYj3RbfaU//48qMTP8M74pVnHzVI6q/7I1L5O+1i1aHqBy+1W7Wd8lj0Cvp7e 62AA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A Let's rename it to "sparse_metadata_init_nid", avoid the "pnum" terminology and drop the function comment. Further, rename the "map" variable to "mem_map" for consistency with other functions. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- mm/sparse.c | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index 71288daeb3665..3c19d47559090 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -221,36 +221,33 @@ void __weak __meminit vmemmap_populate_print_last(voi= d) { } =20 -/* - * Initialize sparse on a specific node. The node spans [pnum_begin, pnum_= end) - * And number of present sections in this node is map_count. - */ -static void __init sparse_init_nid(int nid, unsigned long pnum_begin, - unsigned long pnum_end, - unsigned long map_count) +static void __init sparse_metadata_init_nid(int nid, + unsigned long start_section_nr, unsigned long end_section_nr, + unsigned long nr_sections) { - unsigned long pnum; struct mem_section_usage *usage; + unsigned long section_nr; =20 - usage =3D memblock_alloc_node(map_count * mem_section_usage_size(), + usage =3D memblock_alloc_node(nr_sections * mem_section_usage_size(), SMP_CACHE_BYTES, nid); if (!usage) panic("Failed to allocate usemap for node %d\n", nid); =20 - for_each_present_section_nr(pnum_begin, pnum) { - unsigned long pfn =3D section_nr_to_pfn(pnum); - struct page *map; + for_each_present_section_nr(start_section_nr, section_nr) { + const unsigned long pfn =3D section_nr_to_pfn(section_nr); + struct page *mem_map; =20 - if (pnum >=3D pnum_end) + if (section_nr >=3D end_section_nr) break; =20 - map =3D __populate_section_memmap(pfn, PAGES_PER_SECTION, - nid, NULL, NULL); - if (!map) - panic("Failed to allocate memmap for section %lu\n", pnum); + mem_map =3D __populate_section_memmap(pfn, PAGES_PER_SECTION, nid, + NULL, NULL); + if (!mem_map) + panic("Failed to allocate memmap for section %lu\n", + section_nr); memmap_boot_pages_add(section_nr_vmemmap_pages(pfn, PAGES_PER_SECTION)); - sparse_init_one_section(__nr_to_section(pnum), pnum, map, usage, - SECTION_IS_EARLY); + sparse_init_one_section(__nr_to_section(section_nr), section_nr, + mem_map, usage, SECTION_IS_EARLY); usage =3D (void *)usage + mem_section_usage_size(); } } @@ -268,12 +265,14 @@ static void __init sparse_metadata_init(void) nr_sections++; continue; } - sparse_init_nid(nid_begin, start_section_nr, section_nr, nr_sections); + sparse_metadata_init_nid(nid_begin, start_section_nr, + section_nr, nr_sections); nid_begin =3D nid; start_section_nr =3D section_nr; nr_sections =3D 1; } - sparse_init_nid(nid_begin, start_section_nr, section_nr, nr_sections); + sparse_metadata_init_nid(nid_begin, start_section_nr, section_nr, + nr_sections); } =20 /* --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20CA23EDAB5; Mon, 21 Sep 2026 20:00:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020809; cv=none; b=bsl4jZ9o70jVc+sSV/KyiQl7gbb9jLSUWTpWNS2V1OiZ411W2sPtn/79kTt1nDSYCL1hkRDe+1wNagmUe/Eqn3Knhi3afOrtXIZNzDzGnxwQ/AeU2HO1/RG7mFSh8LcFSLvxj9BO96o+57jdWgotaCIWKFimvHpivPf/Hs7oKzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020809; c=relaxed/simple; bh=4Bu7wqp5LPQ6WPOQiawfPpDIShUPnK46ZronN3GEgM8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=txtA52RgPR7Jf3/PZMAYzukzaGXpZSDMx+UA5PGFjR+uMc/uzVUNEHR0yDKphyY5MC+bCnLwsCHI5wVNLvHcrrFBLZxSam+HcNDgF+pt+GdNkvs48FLbETfliay9YDJ+aNxujdlVLcfm3RqZLFm7NrIZmsArD/kIueWvqdg+U5k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OSjBem8+; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OSjBem8+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCB861F000FF; Mon, 21 Sep 2026 19:59:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020803; bh=Pji+QYSqpVzdYzmgiKoCCOu4eSAGWJQKP9RUR89ehLg=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=OSjBem8+kNwkxg3Bvo4XRxOymzwX9733IZOf4gdzSAwBDvnhPjONwtPsLSXraRCNR 0s7PpCuNdOSpuu87AcmpoVy4Qg4EhLWp2bKMEJ9QfMc6HeSyalwdDiDde/3j3MjeTg a7MNs4pRqI4KcPwlb2nSPiH5E9MYyONCxFqDji24j9e01IDiUdnLuNo0RpNLthmZ16 zdnK+h0A0qn09aC/3UZ+HqXs1lUWNhK4cAiumIMY9DtycZzY8kWpCbL9fsWtg6riRm OT1KR9Mey2IKNe797hS1q+l7MxJ8fVSIgmtrnLdkShDkQNQYRo9hGUjL31NOnB45dN Awqg81sHr5UHg== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:57 +0200 Subject: [PATCH v2 05/13] mm/sparse: cleanup sparse_init_one_section() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-5-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1310; i=david@kernel.org; h=from:subject:message-id; bh=4Bu7wqp5LPQ6WPOQiawfPpDIShUPnK46ZronN3GEgM8=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rTesbSdd69Fy4mRefHe5Y16LOYVYoUWf8UFVrAoh i2efY+po5SFQYyDQVZMkSUo+L7By5fraqvd+Jhh5rAygQxh4OIUgInM1WD4Kzb5q0i+l4H29A9t KSKqG4/5OZccfn/yRuPDKbnKpbfFHjP8M77advOK4RTJGoPddqZNl/Py5gUw+8zYVyA4x/P6tI/ RPAA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A Let's avoid the "pnum" terminology. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- mm/sparse.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/sparse.h b/mm/sparse.h index 530692cdd516f..4ee507c34b98d 100644 --- a/mm/sparse.h +++ b/mm/sparse.h @@ -20,7 +20,7 @@ void sparse_sections_init(void); int sparse_index_init(unsigned long section_nr, int nid); =20 static inline void sparse_init_one_section(struct mem_section *ms, - unsigned long pnum, struct page *mem_map, + unsigned long section_nr, struct page *mem_map, struct mem_section_usage *usage, unsigned long flags) { unsigned long coded_mem_map; @@ -32,7 +32,7 @@ static inline void sparse_init_one_section(struct mem_sec= tion *ms, * page_to_pfn() on !CONFIG_SPARSEMEM_VMEMMAP can simply subtract it * from the page pointer to obtain the PFN. */ - coded_mem_map =3D (unsigned long)(mem_map - section_nr_to_pfn(pnum)); + coded_mem_map =3D (unsigned long)(mem_map - section_nr_to_pfn(section_nr)= ); VM_WARN_ON_ONCE(coded_mem_map & ~SECTION_MAP_MASK); =20 ms->section_mem_map &=3D ~SECTION_MAP_MASK; --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF17841737F; Mon, 21 Sep 2026 20:00:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020818; cv=none; b=pAuScvVExF2ysSy1bYVfizYh8zU2UHTEjkhleW4j7x/J0yWU9H+uwbQkjvFWz+5tIca3I2FZaxSr4zzxXnbQTss6RpnQKdtr1fCrHwrqLdjygdY8wXiQ+QbkCGaZW0E+omq9fSS8CpzrmJq7dG2VKJ/lITxeDF/KSJPossnaCoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020818; c=relaxed/simple; bh=ZMj3GL7XkJQuzRyY7F15KJiefRjsZ0PhiN7MkSd9scA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f1IYvhv3dK3MjGWRUFDcyTPTr0BKYIjBXuwzLyaeHM8xr2rItuyVJMXYeIv4klK4i6VFM4RXbGBZwwIisgNebQuXeJzDAHT+TRdQogCkj6zjbvkVIjyef1jGWpcgqTYExxctHEZWInCtOttgnXrKUSbO2IXQkEe7hdvoufscSbI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jq6hV1F6; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jq6hV1F6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BBD441F00899; Mon, 21 Sep 2026 20:00:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020813; bh=uohIE5Ud1GVLNxgqJo8HKP8fD50DZwtEDQQQXUSGv4w=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=jq6hV1F6xq6J8paTwQAAKGSZfhRwBlx2ocNzRoGzAaeORMDZmCkdqNYnfSdjAeO1b +9p6CA+RwWfuvXt10ONB9W+ARG+TRUSzP3yB/rvbPEoV7h3x7sWzTsshsCjvNmiYGY pBeNThQ0lLtRgem+7/J6YCSayEmXI1vm2Zk2k4NBkI3YmmdMrQ3cdcuezTOKG2FrFE lgDhSxeZUhIapwQdP/NIGtTHVR9WrFUgyzf1vIMzHaMAiPKF/+4ea3XVxFC/PCdRe9 xOsz/YATuBG0ycnif7zegeGNKE1Iar5n84GNQdAAh5k4IHAw6h6OIYVEPlVJ1t2c0T 4oV+JRhM4bYhg== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:58 +0200 Subject: [PATCH v2 06/13] mm/sparse: rename __highest_present_section_nr to __highest_used_section_nr Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-6-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3714; i=david@kernel.org; h=from:subject:message-id; bh=ZMj3GL7XkJQuzRyY7F15KJiefRjsZ0PhiN7MkSd9scA=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rSdNVMPfzFfW2Wpj0ti81133uaDAdce7T7Wd0Gw2 MTRMk25o5SFQYyDQVZMkSUo+L7By5fraqvd+Jhh5rAygQxh4OIUgIlIKzP8U9rU8CH6Dmtb5QHP w6sX/M84WP5Rv2dHk45SBPvLxqwyM4a/YhwN8mbHrj+WeuvGKmh4Y9nqR75Z1+zn/muoXe5857c RHwA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A In preparation for getting rid of SECTION_MARKED_PRESENT, rename __highest_present_section_nr and clarify the comment. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- include/linux/mmzone.h | 6 +++--- mm/compaction.c | 2 +- mm/sparse.c | 12 ++++-------- mm/sparse.h | 4 ++-- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index ebbda6f311392..0c2fea48c261b 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -2181,7 +2181,7 @@ static inline struct mem_section *__pfn_to_section(un= signed long pfn) return __nr_to_section(pfn_to_section_nr(pfn)); } =20 -extern unsigned long __highest_present_section_nr; +extern unsigned long __highest_used_section_nr; =20 static inline int subsection_map_index(unsigned long pfn) { @@ -2280,7 +2280,7 @@ static inline unsigned long first_valid_pfn(unsigned = long pfn, unsigned long end =20 rcu_read_lock_sched(); =20 - while (nr <=3D __highest_present_section_nr && pfn < end_pfn) { + while (nr <=3D __highest_used_section_nr && pfn < end_pfn) { struct mem_section *ms =3D __pfn_to_section(pfn); =20 if (valid_section(ms) && @@ -2335,7 +2335,7 @@ static inline int pfn_in_present_section(unsigned lon= g pfn) =20 static inline unsigned long next_present_section_nr(unsigned long section_= nr) { - while (++section_nr <=3D __highest_present_section_nr) { + while (++section_nr <=3D __highest_used_section_nr) { if (present_section_nr(section_nr)) return section_nr; } diff --git a/mm/compaction.c b/mm/compaction.c index 4994e200bbecd..f1b2060eb2016 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -216,7 +216,7 @@ static unsigned long skip_offline_sections(unsigned lon= g start_pfn) if (online_section_nr(start_nr)) return 0; =20 - while (++start_nr <=3D __highest_present_section_nr) { + while (++start_nr <=3D __highest_used_section_nr) { if (online_section_nr(start_nr)) return section_nr_to_pfn(start_nr); } diff --git a/mm/sparse.c b/mm/sparse.c index 3c19d47559090..bb89017254f4d 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -164,15 +164,11 @@ static void __init mminit_validate_memmodel_limits(un= signed long *start_pfn, } =20 /* - * There are a number of times that we loop over NR_MEM_SECTIONS, - * looking for section_present() on each. But, when we have very - * large physical address spaces, NR_MEM_SECTIONS can also be - * very large which makes the loops quite long. - * - * Keeping track of this gives us an easy way to break out of - * those loops early. + * Looping over all possible memory sections is expensive, especially if + * NR_MEM_SECTIONS is large but only a fraction is actually used. Keep tra= ck of + * the highest section number we ever used. */ -unsigned long __highest_present_section_nr; +unsigned long __highest_used_section_nr; =20 static inline unsigned long first_present_section_nr(void) { diff --git a/mm/sparse.h b/mm/sparse.h index 4ee507c34b98d..242b7bab0013c 100644 --- a/mm/sparse.h +++ b/mm/sparse.h @@ -44,8 +44,8 @@ static inline void sparse_init_one_section(struct mem_sec= tion *ms, static inline void __section_mark_present(struct mem_section *ms, unsigned long section_nr) { - if (section_nr > __highest_present_section_nr) - __highest_present_section_nr =3D section_nr; + if (section_nr > __highest_used_section_nr) + __highest_used_section_nr =3D section_nr; =20 ms->section_mem_map |=3D SECTION_MARKED_PRESENT; } --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 98FAB2C3757; Mon, 21 Sep 2026 20:00:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020825; cv=none; b=CU1QpfmySGhbfI2MmE1v/X3TnmdfTCgwYXOEAETGS1oKVeDFwuFJBLY5RuQ3HeAGLNUfGyp2ryL78+NLnml3KMGrvVx0DZLTIU4KYRZipl2AQxJqX2tr1vHIueSfjBeyYNPgWmxIdrDyvTpS7cwn3Rm3jXSnyYMgWV/ClfM5K/I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020825; c=relaxed/simple; bh=Jle8I94CDmdb6pvC+qkgL9TgIKRqIkcLTUltvuexjhY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j+uK4ieLedmfzoWls/TKln68Dgob3x0eXzwAYlOI3MBkgE3UgCP5qBftXJMG8Moo2GJfEPnE8oGQhj2DN0w4ugU1rVhneIt9e0e0LPoptKW9WH+A3Q97DUDe4kydZJCEcXrJIFn7tcou2yljzK5cNu1NXaXh37mnvnhcx4p2Drs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RcANY6MP; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RcANY6MP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DD45C1F000FF; Mon, 21 Sep 2026 20:00:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020823; bh=BWjdXfohek7UjopKrNfrvbb5fe9CUNtaKf7mkTIpAPM=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=RcANY6MPoJ2cYKtAT9WPPzebl6rnP5o06GtQRzAxnS2cy1JZ5rgXmtN1t5ZGKsbbH 25x3qs1W6FlHMH+KF9gdSLgkXJJDREvTRnQOsdNal5ankk+VYml4E3fGwimsdCp+vM NphSgLOkAm8GFPTWivHmIIzFeB7/OnEU35Yc3BVa4QQQv05VDFFeVgjETOBb2q9efS UfR3jAZA1LhbPlCRhFxkd+wgwhcEzqtp1K1JVxIW5XjepqiRLEQ9j3mzScmCq15cuF txdI0eKbUsdLOcCl/QC9e9PRxydnF8kcOTUTluQs+R8x/ciTLTZ7+1Y/in+RED0gUP xjPfr/4voZJnA== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:58:59 +0200 Subject: [PATCH v2 07/13] mm/sparse: remove pfn_in_present_section() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-7-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1195; i=david@kernel.org; h=from:subject:message-id; bh=Jle8I94CDmdb6pvC+qkgL9TgIKRqIkcLTUltvuexjhY=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rR5GKiXvujIEuRX+Shp77folP9Hhcre57Mi2+uuh UzlW3W7o5SFQYyDQVZMkSUo+L7By5fraqvd+Jhh5rAygQxh4OIUgIl8DWNkmH3816TKqS9/GBwT FvpV72i/X7Pp4S2vhPiCTQ81t7TUMDIytObKHBOrfc2cGm/kGp2tX7D0qsnpc8I8L2xSHCW7wzZ zAAA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A Unused, let's remove it. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- include/linux/mmzone.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 0c2fea48c261b..a3937577fbfb2 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -2326,13 +2326,6 @@ static inline unsigned long next_valid_pfn(unsigned = long pfn, unsigned long end_ =20 #endif =20 -static inline int pfn_in_present_section(unsigned long pfn) -{ - if (pfn_to_section_nr(pfn) >=3D NR_MEM_SECTIONS) - return 0; - return present_section(__pfn_to_section(pfn)); -} - static inline unsigned long next_present_section_nr(unsigned long section_= nr) { while (++section_nr <=3D __highest_used_section_nr) { @@ -2362,9 +2355,6 @@ static inline unsigned long next_present_section_nr(u= nsigned long section_nr) #else #define pfn_to_nid(pfn) (0) #endif - -#else -#define pfn_in_present_section pfn_valid #endif /* CONFIG_SPARSEMEM */ =20 /* --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD2DF3AEF46; Mon, 21 Sep 2026 20:00:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020835; cv=none; b=C0vuJsBB3eG9xtTuxTFFLWYVS5ir+cW51ExLQsTTS0BzuGMGfj6D5A6QfjEcYQIMMOMjYFvBhFBa1SfHMYHigfpEa3i4cgf4SlqMs9/Rk2EL2i825wyNOQCZW2mimaxAzH18I/sgluB3hsffY680AivT4H0yvCs1hqd16K7NfkQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020835; c=relaxed/simple; bh=MAPvsLwqeTEpF0LPG4Zd4p1dImR5G5txQSW8jy2p0x0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HPuHlRS3KFv/DP5QEodZ1PrepRtA8QIVXme/6zSyRFLYukEEMMR76mzw1/DSRGp1YZefTkgUFkzNUAZ0zD30GYz8yknXX1T7JJW7DdAwA6cnbx+t3SJMeN0xXtyM01kr4RnUooXeBvJOtng+UtddAdPOyzu4FBtfLYIEP6GC/nY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CiceSYwR; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CiceSYwR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B3DC41F00898; Mon, 21 Sep 2026 20:00:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020832; bh=yBc8LKQV5IFSgEgJspkfgYC6oU0VoqbkBUUOKxrLma4=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=CiceSYwR28kIPNtzcNquf4Sh/wpB3CCKPRYksMJN0pwKLDxPCWxVukiYM4DxQ1uTQ SEyzoPrbJ5ELSiIrtANuNkJV7S8MtyUoCOp7LEpkk0/CeCf0gAfnzuyNRun28aUl2j S6CCU8Quz/caod0JWfTGcdm3JUBY16Pb6xp4qcZU7zUdDsZa9t4mvzMswZ9fekHhR6 /3NCDf1sJ1RTAEEAmjXdgnYnkuYzs1MMFkx2WTFgquIsiNO9qpO8nQKx/JvJkFbVyv qGiLYaZ0JvQTPplNs8Ap8BLhHKMLPDtU4sieD9ykGvDQxG3G/uyKwav/Z9fRcRZitD PnfcGMkZvExJA== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:59:00 +0200 Subject: [PATCH v2 08/13] mm/sparse: move __highest_used_section_nr handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-8-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2996; i=david@kernel.org; h=from:subject:message-id; bh=MAPvsLwqeTEpF0LPG4Zd4p1dImR5G5txQSW8jy2p0x0=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rSFGC3dkXbvkGKa5dnAUxud6j/kdO5f0lJlNf33V 6bTWfXyHaUsDGIcDLJiiixBwfcNXr5cV1vtxscMM4eVCWQIAxenAExkxxtGhhXfSo9k71N907zI a1FqCS+DwBsOMZGuHsngK3bK9fNO+jD8d095IxFZ8c9UN1HWXURgtuC0Cw/57nJPsVL9b9j8awk XNwA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A In preparation for removing __section_mark_present(), let's move __highest_used_section_nr handling into its callers. Verify in sparse_init_one_section() that it was properly updated. In sparse_sections_init() we can just set it to the last processed section_nr. No functional change intended. Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) Acked-by: Oscar Salvador --- mm/sparse-vmemmap.c | 1 + mm/sparse.c | 5 +++-- mm/sparse.h | 4 +--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 96506f594924c..e89efb67e8e6d 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -865,6 +865,7 @@ int __meminit sparse_add_section(int nid, unsigned long= start_pfn, page_init_poison(memmap, sizeof(struct page) * nr_pages); =20 __section_mark_present(ms, section_nr); + __highest_used_section_nr =3D max(section_nr, __highest_used_section_nr); =20 /* Align memmap to section boundary in the subsection case */ if (section_nr_to_pfn(section_nr) !=3D start_pfn) diff --git a/mm/sparse.c b/mm/sparse.c index bb89017254f4d..a0f50ca5acf5a 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -177,7 +177,7 @@ static inline unsigned long first_present_section_nr(vo= id) =20 void __init sparse_sections_init(void) { - unsigned long pfn, start_pfn, end_pfn; + unsigned long pfn, start_pfn, end_pfn, section_nr; int i, nid; =20 sparse_extreme_init(); @@ -187,9 +187,9 @@ void __init sparse_sections_init(void) mminit_validate_memmodel_limits(&start_pfn, &end_pfn); =20 for (pfn =3D start_pfn; pfn < end_pfn; pfn +=3D PAGES_PER_SECTION) { - unsigned long section_nr =3D pfn_to_section_nr(pfn); struct mem_section *ms; =20 + section_nr =3D pfn_to_section_nr(pfn); sparse_index_init(section_nr, nid); ms =3D __nr_to_section(section_nr); if (ms->section_mem_map) @@ -201,6 +201,7 @@ void __init sparse_sections_init(void) __section_mark_present(ms, section_nr); } } + __highest_used_section_nr =3D section_nr; } #ifndef CONFIG_SPARSEMEM_VMEMMAP struct page __init *__populate_section_memmap(unsigned long pfn, diff --git a/mm/sparse.h b/mm/sparse.h index 242b7bab0013c..c396d5c05cfc8 100644 --- a/mm/sparse.h +++ b/mm/sparse.h @@ -26,6 +26,7 @@ static inline void sparse_init_one_section(struct mem_sec= tion *ms, unsigned long coded_mem_map; =20 BUILD_BUG_ON(SECTION_MAP_LAST_BIT > PFN_SECTION_SHIFT); + VM_WARN_ON_ONCE(section_nr > __highest_used_section_nr); =20 /* * We encode the start PFN of the section into the mem_map such that @@ -44,9 +45,6 @@ static inline void sparse_init_one_section(struct mem_sec= tion *ms, static inline void __section_mark_present(struct mem_section *ms, unsigned long section_nr) { - if (section_nr > __highest_used_section_nr) - __highest_used_section_nr =3D section_nr; - ms->section_mem_map |=3D SECTION_MARKED_PRESENT; } =20 --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0290D4078DA; Mon, 21 Sep 2026 20:00:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020845; cv=none; b=G9XcUDQUC2kzqCZGHMTLV6Uli9lQvnw/bC549zA6+zmJ49mQ1/44XmbURm4buplBOgEyPvNmjmcmHnl8oZBWTHMD3Md9/eFgNQwE25DppbLsYFobJVUMbLuWtS74eRlv05dyjxAdWsz5QHptU6fdKfyuWyMBwVISrS2Lnkk/Dek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020845; c=relaxed/simple; bh=jwQvu4qZS6XE1lcAS+1uGAzJgDZ5r8Nhr1JAmrC9v1A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BQihDSP4fpkUjyvSMtsfI4G94krcWfQ25jcBFRRu2+i2qXUoWisO1ahvkSuaWQ/m0UJQwYMDFir/+rVd/A7gprnhYrq4l4PkRFfKRjSsjtlUD1aLsDGn+rzwK6A0wg7AT3rkUub0VdfwhHeve+jKFtOdcVRDR+8erQOUkhGAz9M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n/21wIT5; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="n/21wIT5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5AF4B1F00899; Mon, 21 Sep 2026 20:00:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020843; bh=y62DVnMDdavAiYdaSQq1B6ymlLgshs+nlcdsOqXOLNo=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=n/21wIT5DeOj0tDR10PV6a4TVmuf60zaeenrhNhRg3XkB2L3EFMMQpfrQPZU4O3cn 7cM9mxkE2KJRADMKeYoBo0kRy1TN/yvVfquwu7TsbYnRsL0u6KUytogk/JTcM3M76W eKY/mdS0K+GGpPP95F8qt/P3cRCTvrTuC3q+4vS27DKAN3EcUm6Ong/KC6trt3v79S vmLsPsF/iI/n4rok4KMmDye1qKWnWYa19FxP0Y3FqZ/VhwV8jKRRxFJmf5U5f1dOad A1xy2vUEou15k3S5lbCjf6dRv9e4jRDF6ZLttGqtmSLc026V7phMcqmvBG6R7CtJN+ +2jvHiPg71Nrw== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:59:01 +0200 Subject: [PATCH v2 09/13] scripts/gdb: mm.py: remove fallbacks for SECTION_HAS_MEM_MAP and SECTION_IS_EARLY Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-9-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org, Seongjun Hong X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1344; i=david@kernel.org; h=from:subject:message-id; bh=jwQvu4qZS6XE1lcAS+1uGAzJgDZ5r8Nhr1JAmrC9v1A=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rS9XfrH56DO7yuLD8a/lj7zzGK/7GEn1y3ayqLHL iyOqMxZ3lHCwiDGwSArpsgSFHzf4OXLdbXVbnzMMHNYmUCGMHBxCsBE6p4wfBVQfSBYV7YgY+e0 TAXW9gOOi04yqZw/JL50vWPyl2ybVob/idcrC7aKht2MUA15Faec3itQIvishkMytb931eSZa+w YAA== X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A There is no reason to handle the absence of the corresponding BIT values. So let's remove the fallbacks. Link: https://lore.kernel.org/r/vpz5zqg5nwbpolxbkip45vxxdt3lni7j2haal7q42sk= c3b57tu@uh4cec4x32dq Cc: Seongjun Hong Signed-off-by: David Hildenbrand (Arm) --- scripts/gdb/linux/mm.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/gdb/linux/mm.py b/scripts/gdb/linux/mm.py index 193a88d763abf..7398105ff3f67 100644 --- a/scripts/gdb/linux/mm.py +++ b/scripts/gdb/linux/mm.py @@ -71,12 +71,8 @@ class x86_page_ops(): =20 self.NR_SECTION_ROOTS =3D DIV_ROUND_UP(self.NR_MEM_SECTIONS, self.= SECTIONS_PER_ROOT) =20 - try: - self.SECTION_HAS_MEM_MAP =3D 1 << int(gdb.parse_and_eval('SECT= ION_HAS_MEM_MAP_BIT')) - self.SECTION_IS_EARLY =3D 1 << int(gdb.parse_and_eval('SECTION= _IS_EARLY_BIT')) - except: - self.SECTION_HAS_MEM_MAP =3D 1 << 0 - self.SECTION_IS_EARLY =3D 1 << 3 + self.SECTION_HAS_MEM_MAP =3D 1 << int(gdb.parse_and_eval('SECTION_= HAS_MEM_MAP_BIT')) + self.SECTION_IS_EARLY =3D 1 << int(gdb.parse_and_eval('SECTION_IS_= EARLY_BIT')) =20 self.SUBSECTION_SHIFT =3D 21 self.PAGES_PER_SUBSECTION =3D 1 << (self.SUBSECTION_SHIFT - self.P= AGE_SHIFT) --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B7F03B8959; Mon, 21 Sep 2026 20:00:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020857; cv=none; b=lSNQWgovoyVGC1Ci5PgFG+lsZrru0Dv8EOymZWBUZrHGhnE83rdBymMvTq3y4xH7njCGdz6YK2zPrxMuuoLHsUkPhbzn9kcMcpcVcZQWyBtmDzQ+WbUPvJkxOH/zW66YH0CAqL0Eovd2/dLUIlxktgAiKtK/48enhR9tqrNYle8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020857; c=relaxed/simple; bh=Kj43xG8ptu7m5f83Ilnopm8xJGaEKq2XJfrEsdD2UAU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T35uU/vojb5LxlFeuxWCz2xpWUlD/yQuwu4667LRjkjeH7AxNAAUr7p3SDB18F3vjXH9jGJJ16sKeLlggubU5o/CNtWCuqRcrJXPLQDVq5Nrbqr6S6BZLqPORb+yrBZyn3YpWjoR9hAqYJAQLLhRCEnYCEh4AlOEK0tB9D9FMIQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=T5IMW0BP; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="T5IMW0BP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 033791F000FF; Mon, 21 Sep 2026 20:00:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020853; bh=nwyBwRForlDJQnveIzB8Y6RYc+5OT4f8Qi/OV+McEOM=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=T5IMW0BPHepTvBlGz/FCLKDCkabRE/4OBx4krrRKgGhjjVw4VZ7ljtWpfETow1Foe xfJCWDD4BEybD4K8awP78HneQy1KJhcUsopNseIdHZ8mXcw5G7wn6H+HYnO+++skth b7MGDUmHiC7fPPuZN0WmEGfGxEMD/EPkHgFFug1p/yWZGdlULy5FbWrfk2mOdpVbYS Pa/6h70MFF5yOx6C3S0FmIkGSoiEQL2a3o9wAttrm8DVw36oZaxIz234/H4x9AOIIb HCi2m0UtF1dm/O1t9NM7QZrZNUiQLZfInH59nTXQgJvSYNYDuWbQmsqYBl7tPe8Nrx mqhXlY1CUs+Zw== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:59:02 +0200 Subject: [PATCH v2 10/13] mm/sparse: remove SECTION_MARKED_PRESENT Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-10-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=8047; i=david@kernel.org; h=from:subject:message-id; bh=Kj43xG8ptu7m5f83Ilnopm8xJGaEKq2XJfrEsdD2UAU=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rQFbX66n61c6pB6UMoGEb/ac8nKsYltbD8vrDv2a +ZRrerrHaUsDGIcDLJiiixBwfcNXr5cV1vtxscMM4eVCWQIAxenAEzkahvDP/POFy/lLXTFf6yV 77yvIu14b8YBtrquVxwLbFjPT288s4uRoUVQVHRn09ve5p9T5ByaGf41ZO4PWlLtfFVZwIHjsoI mEwA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A All present section iterators run before memory hotplug added any further memory sections, Therefore, we can simply use the SECTION_IS_EARLY flag by setting that flag earlier in sparse_sections_init(). Get rid of SECTION_MARKED_PRESENT entirely and rename for_each_present_section_nr() to for_each_early_section_nr(). Take care of the .clang-format for_each_present_section_nr() handling. No functional change intended. Acked-by: Oscar Salvador Acked-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- .clang-format | 2 +- drivers/base/memory.c | 2 +- include/linux/mmzone.h | 27 ++++++++++----------------- mm/sparse-vmemmap.c | 1 - mm/sparse.c | 17 ++++++++--------- mm/sparse.h | 6 ------ 6 files changed, 20 insertions(+), 35 deletions(-) diff --git a/.clang-format b/.clang-format index 5ef5743b77c95..395292ab2ac63 100644 --- a/.clang-format +++ b/.clang-format @@ -282,6 +282,7 @@ ForEachMacros: - 'for_each_dpcm_fe' - 'for_each_drhd_unit' - 'for_each_dss_dev' + - 'for_each_early_section_nr' - 'for_each_efi_memory_desc' - 'for_each_efi_memory_desc_in_map' - 'for_each_element' @@ -403,7 +404,6 @@ ForEachMacros: - 'for_each_possible_cpu_wrap' - 'for_each_present_blessed_reg' - 'for_each_present_cpu' - - 'for_each_present_section_nr' - 'for_each_prime_number' - 'for_each_prime_number_from' - 'for_each_probe_cache_entry' diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 5eead3346f1e3..b0338de2f1d82 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -972,7 +972,7 @@ void __init memory_dev_init(void) * block so that it can be covered. */ block_id =3D ULONG_MAX; - for_each_present_section_nr(0, nr) { + for_each_early_section_nr(0, nr) { if (block_id !=3D ULONG_MAX && memory_block_id(nr) =3D=3D block_id) continue; =20 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index a3937577fbfb2..73d9781cc1510 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -2085,7 +2085,6 @@ static inline struct mem_section *__nr_to_section(uns= igned long nr) * accommodate SECTION_MAP_LAST_BIT. We use BUILD_BUG_ON() to ensure this. */ enum { - SECTION_MARKED_PRESENT_BIT, SECTION_HAS_MEM_MAP_BIT, SECTION_IS_ONLINE_BIT, SECTION_IS_EARLY_BIT, @@ -2095,7 +2094,6 @@ enum { SECTION_MAP_LAST_BIT, }; =20 -#define SECTION_MARKED_PRESENT BIT(SECTION_MARKED_PRESENT_BIT) #define SECTION_HAS_MEM_MAP BIT(SECTION_HAS_MEM_MAP_BIT) #define SECTION_IS_ONLINE BIT(SECTION_IS_ONLINE_BIT) #define SECTION_IS_EARLY BIT(SECTION_IS_EARLY_BIT) @@ -2112,16 +2110,6 @@ static inline struct page *__section_mem_map_addr(st= ruct mem_section *section) return (struct page *)map; } =20 -static inline int present_section(const struct mem_section *section) -{ - return (section && (section->section_mem_map & SECTION_MARKED_PRESENT)); -} - -static inline int present_section_nr(unsigned long nr) -{ - return present_section(__nr_to_section(nr)); -} - static inline int valid_section(const struct mem_section *section) { return (section && (section->section_mem_map & SECTION_HAS_MEM_MAP)); @@ -2137,6 +2125,11 @@ static inline int valid_section_nr(unsigned long nr) return valid_section(__nr_to_section(nr)); } =20 +static inline int early_section_nr(unsigned long nr) +{ + return early_section(__nr_to_section(nr)); +} + static inline int online_section(const struct mem_section *section) { return (section && (section->section_mem_map & SECTION_IS_ONLINE)); @@ -2326,20 +2319,20 @@ static inline unsigned long next_valid_pfn(unsigned= long pfn, unsigned long end_ =20 #endif =20 -static inline unsigned long next_present_section_nr(unsigned long section_= nr) +static inline unsigned long next_early_section_nr(unsigned long section_nr) { while (++section_nr <=3D __highest_used_section_nr) { - if (present_section_nr(section_nr)) + if (early_section_nr(section_nr)) return section_nr; } =20 return -1; } =20 -#define for_each_present_section_nr(start, section_nr) \ - for (section_nr =3D next_present_section_nr(start - 1); \ +#define for_each_early_section_nr(start, section_nr) \ + for (section_nr =3D next_early_section_nr(start - 1); \ section_nr !=3D -1; \ - section_nr =3D next_present_section_nr(section_nr)) + section_nr =3D next_early_section_nr(section_nr)) =20 /* * These are _only_ used during initialisation, therefore they diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index e89efb67e8e6d..f0db433e0f10b 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -864,7 +864,6 @@ int __meminit sparse_add_section(int nid, unsigned long= start_pfn, if (!section_vmemmap_optimizable(ms)) page_init_poison(memmap, sizeof(struct page) * nr_pages); =20 - __section_mark_present(ms, section_nr); __highest_used_section_nr =3D max(section_nr, __highest_used_section_nr); =20 /* Align memmap to section boundary in the subsection case */ diff --git a/mm/sparse.c b/mm/sparse.c index a0f50ca5acf5a..5d2d9f95d4024 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -170,13 +170,14 @@ static void __init mminit_validate_memmodel_limits(un= signed long *start_pfn, */ unsigned long __highest_used_section_nr; =20 -static inline unsigned long first_present_section_nr(void) +static inline unsigned long first_early_section_nr(void) { - return next_present_section_nr(-1); + return next_early_section_nr(-1); } =20 void __init sparse_sections_init(void) { + const unsigned long flags =3D SECTION_IS_EARLY | SECTION_IS_ONLINE; unsigned long pfn, start_pfn, end_pfn, section_nr; int i, nid; =20 @@ -196,9 +197,7 @@ void __init sparse_sections_init(void) continue; =20 set_section_nid(section_nr, nid); - ms->section_mem_map =3D sparse_encode_early_nid(nid) | - SECTION_IS_ONLINE; - __section_mark_present(ms, section_nr); + ms->section_mem_map =3D sparse_encode_early_nid(nid) | flags; } } __highest_used_section_nr =3D section_nr; @@ -230,7 +229,7 @@ static void __init sparse_metadata_init_nid(int nid, if (!usage) panic("Failed to allocate usemap for node %d\n", nid); =20 - for_each_present_section_nr(start_section_nr, section_nr) { + for_each_early_section_nr(start_section_nr, section_nr) { const unsigned long pfn =3D section_nr_to_pfn(section_nr); struct page *mem_map; =20 @@ -244,18 +243,18 @@ static void __init sparse_metadata_init_nid(int nid, section_nr); memmap_boot_pages_add(section_nr_vmemmap_pages(pfn, PAGES_PER_SECTION)); sparse_init_one_section(__nr_to_section(section_nr), section_nr, - mem_map, usage, SECTION_IS_EARLY); + mem_map, usage, 0); usage =3D (void *)usage + mem_section_usage_size(); } } =20 static void __init sparse_metadata_init(void) { - unsigned long start_section_nr =3D first_present_section_nr(); + unsigned long start_section_nr =3D first_early_section_nr(); int nid_begin =3D sparse_early_nid(__nr_to_section(start_section_nr)); unsigned long section_nr, nr_sections =3D 1; =20 - for_each_present_section_nr(start_section_nr + 1, section_nr) { + for_each_early_section_nr(start_section_nr + 1, section_nr) { const int nid =3D sparse_early_nid(__nr_to_section(section_nr)); =20 if (nid =3D=3D nid_begin) { diff --git a/mm/sparse.h b/mm/sparse.h index c396d5c05cfc8..19664d702af84 100644 --- a/mm/sparse.h +++ b/mm/sparse.h @@ -42,12 +42,6 @@ static inline void sparse_init_one_section(struct mem_se= ction *ms, ms->usage =3D usage; } =20 -static inline void __section_mark_present(struct mem_section *ms, - unsigned long section_nr) -{ - ms->section_mem_map |=3D SECTION_MARKED_PRESENT; -} - static inline size_t mem_section_usage_size(void) { return struct_size_t(struct mem_section_usage, pageblock_flags, --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC33940A92F; Mon, 21 Sep 2026 20:01:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020865; cv=none; b=PT+vC7MRQa5908CHgpMxlsvUvInSTVjIceAaMCKdPOUgLZIoyFHw34mfkctQud7w82RQW7Q3G0Lt+mQvTRQ8nc2Aeya3i3usoErcLJaSXvG7puuw+M2RyQYxeqZVU30Q0pZHUKvoX2iroOwArewpPmjBlvt8SRBI3mjpJ4h5i3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020865; c=relaxed/simple; bh=N/9OGvGMP2oKAsMrqGIIPnQ4ai1EtHZkGHyygVZ1Lq0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Kro4mv0/U3sestdKem8IDkhGaGNGTFaBy0JgiY42wSd7IkTf658R/zaWms80pDudEukuVWUkmQW/nGh/+HY/4500TwS58EWiH7D1Pa5CJ6g1FJmUNBi+zX3skfTq7yctUHyJfwkhO0RgoAzqVmOicHVFkj44HvigYeKrzZA8JPc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hFShNioD; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hFShNioD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B47B1F00893; Mon, 21 Sep 2026 20:00:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020863; bh=aiW8jMRF7trBH5bkli+MjzrubVcAAqfTiLF5O9WVvhs=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=hFShNioD8FIHUBPTTlNed6+nGMGaxBGmHT701pV1AkxSTAInddj9jcXHuknAJ0deb 6JuE2m9tfJWf5ihrXLNXTWSEHvC2cszDBZTxb2nIFwrYxYkvlK7m9UqPnzYL4ayK/t Fh0m6UZRYqyG+3dX+gPfFwAHAyuRwgX1rEO6YBGdhm+mI2v3UkJ17xFc9fW+TaHA0k RB9EYsX0YuIorA6ooaYUbo6VOTusScsUhryPOHvdGP/JhHONA0X0ffZnaJVSVD9cbR vnWRVzyaZIykdCwmzyk4JITq446R74sw2TBVaH3rqtV76s2D45yyraFtH75Z6CQT9i +JwyHF+JB69ww== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:59:03 +0200 Subject: [PATCH v2 11/13] mm/sparse: remove flags parameter from sparse_init_one_section() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-11-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2374; i=david@kernel.org; h=from:subject:message-id; bh=N/9OGvGMP2oKAsMrqGIIPnQ4ai1EtHZkGHyygVZ1Lq0=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rRVJuerKQhvSQ5K9nXfHddWu1pWMzTxl6nqfN8+l 5vi82d2lLIwiHEwyIopsgQF3zd4+XJdbbUbHzPMHFYmkCEMXJwCMBHZpQz//ZMUuHVl2K782c6X 87fzp5JdmMLqktLzX6et//ih8IkZF8M/Xd/5f47OXtuteNeld9+f6otJXc6qkpr+umKa+mZcW17 yAwA= X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A The last user of the flags parameter that used to pass SECTION_IS_EARLY was removed, so let's remove the parameter. Acked-by: Oscar Salvador Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- mm/sparse-vmemmap.c | 2 +- mm/sparse.c | 2 +- mm/sparse.h | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index f0db433e0f10b..3267f9362c68b 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -869,7 +869,7 @@ int __meminit sparse_add_section(int nid, unsigned long= start_pfn, /* Align memmap to section boundary in the subsection case */ if (section_nr_to_pfn(section_nr) !=3D start_pfn) memmap =3D pfn_to_page(section_nr_to_pfn(section_nr)); - sparse_init_one_section(ms, section_nr, memmap, ms->usage, 0); + sparse_init_one_section(ms, section_nr, memmap, ms->usage); =20 return 0; } diff --git a/mm/sparse.c b/mm/sparse.c index 5d2d9f95d4024..702904b417006 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -243,7 +243,7 @@ static void __init sparse_metadata_init_nid(int nid, section_nr); memmap_boot_pages_add(section_nr_vmemmap_pages(pfn, PAGES_PER_SECTION)); sparse_init_one_section(__nr_to_section(section_nr), section_nr, - mem_map, usage, 0); + mem_map, usage); usage =3D (void *)usage + mem_section_usage_size(); } } diff --git a/mm/sparse.h b/mm/sparse.h index 19664d702af84..fdbc4cacf91d1 100644 --- a/mm/sparse.h +++ b/mm/sparse.h @@ -21,7 +21,7 @@ int sparse_index_init(unsigned long section_nr, int nid); =20 static inline void sparse_init_one_section(struct mem_section *ms, unsigned long section_nr, struct page *mem_map, - struct mem_section_usage *usage, unsigned long flags) + struct mem_section_usage *usage) { unsigned long coded_mem_map; =20 @@ -37,8 +37,7 @@ static inline void sparse_init_one_section(struct mem_sec= tion *ms, VM_WARN_ON_ONCE(coded_mem_map & ~SECTION_MAP_MASK); =20 ms->section_mem_map &=3D ~SECTION_MAP_MASK; - ms->section_mem_map |=3D coded_mem_map; - ms->section_mem_map |=3D flags | SECTION_HAS_MEM_MAP; + ms->section_mem_map |=3D coded_mem_map | SECTION_HAS_MEM_MAP; ms->usage =3D usage; } =20 --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2024A43E9E0; Mon, 21 Sep 2026 20:01:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020877; cv=none; b=jpUfl3/qarT72FKy92FO6ed5SATW1s51R80cdJYwwpTeE2kKquPAXeW6ssK4SMXWYAIyQ9/6BkUrV8nLoR9xeONuzfC38P1jDVMKzztTJbBt5z8KIxx5UPYV72PDSgtnVDCsCbUMadq04+W/5hU8wIPo89eealTc3QjpPMDCSLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020877; c=relaxed/simple; bh=kW71CGw1PYjxPgKG6zvCBhURTueD7ZfqBQYFE8KvMsc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YIEPdUUl53jLYFm8MHlKCw74Dy0pGySo67pqG33rlYgCBZ5U5BWN1ZZ+5ub5K/U/GbX08o9NAdgn8J++Za+qXQTFWIKTZ+XwAXY0fehHD8ouAp4q5Rp+YGCjPAWzP4zNuIGSGf7uqshTwByspScD9C2wVsspTbNJWkyn/ImTv5k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lPA7bQ0Y; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lPA7bQ0Y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 142131F000FF; Mon, 21 Sep 2026 20:01:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020873; bh=AX6nGJVBYsmzhxob//RZpUMd+OEByTGb1my+643nlcM=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=lPA7bQ0Y8NxC0wuxHCH8bXKmGCDNvYNwrEnqOF9CaZeXU6vSkj2f3dtIY254mbADY 3wrcuT/NmJsCr5vJIcN2+Rz8l5EE0EOLaufW17kc9fxVSj7Frao5VgbBSKfe2t0+EQ tQC6mXZmOFpNtg3z5krpUo/v1PYq89Cv8XZNO49C29i62EzNT3KJcJZFd2KG+E1ooX TGojP2sXyqOw+85W+UJEEzDVsBAqzEmh33DjIPdbbGUJbarzWsQ5a0VtjQk2N1emnG OalGVrUHAe1GmmuW/Z0uLwW3dHLhlQWFGXu15hYmBp/c5bFFtYDlku6c1HEPC81FYc ZoHoVwdO7VSUQ== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:59:04 +0200 Subject: [PATCH v2 12/13] fs/proc/page: clarify comment in get_max_dump_pfn() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-12-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1209; i=david@kernel.org; h=from:subject:message-id; bh=kW71CGw1PYjxPgKG6zvCBhURTueD7ZfqBQYFE8KvMsc=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rSJql0Rmifnxm7RJB25RG++8bZ1RycJLL/6xmvXc u8ejZNHOkpZGMQ4GGTFFFmCgu8bvHy5rrbajY8ZZg4rE8gQBi5OAZjI1UhGhnkph/08EjdN0PbP n3Poxc1Ndb6bredc2LR4i2hVj+mMJycZGfb5KoXvrJq+fdGnK+LJ6YcM9y/Q+PPTvDG5Zm+v9EX H1fwA X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A pfn_to_online_page() will only succeed on some PFNs within the same section, not necessarily all. Let's make that clearer. While at it, rephrase it to "Allow inspection of". Acked-by: Oscar Salvador Acked-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) --- fs/proc/page.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/fs/proc/page.c b/fs/proc/page.c index f90e1030825e9..6aa99e42ec222 100644 --- a/fs/proc/page.c +++ b/fs/proc/page.c @@ -31,10 +31,9 @@ static inline unsigned long get_max_dump_pfn(void) { #ifdef CONFIG_SPARSEMEM /* - * The memmap of early sections is completely populated and marked - * online even if max_pfn does not fall on a section boundary - - * pfn_to_online_page() will succeed on all pages. Allow inspecting - * these memmaps. + * If max_pfn does not fall on a section boundary, pfn_to_online_page() + * can succeed on PFNs beyond max_pfn within the same section. Allow + * inspection of these memmaps. */ return round_up(max_pfn, PAGES_PER_SECTION); #else --=20 2.43.0 From nobody Thu Sep 24 18:40:15 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 72B6340B360; Mon, 21 Sep 2026 20:01:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020885; cv=none; b=FDv+57asQ/DwZjyKGYbky8MuqeHYUoliJWoA64gexca/9mxvlOg14TSz7Kbn6gjBd9++jGFfYFH0XtOLFJxtFZ8gvTwxlNPkVSKP4S0gRnq12Rts9JDJekXd/NaiXu3m7D8catcaGQrNdsUqckOFCQeI1UkVsBIcxYvbOC4IG+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790020885; c=relaxed/simple; bh=wS9y+w2lDfEszO4z/i/MtEKk8SGbU5ElVBcX2HbtZBQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k3Mcc8qavhFQtY2UM9Ay+iPoGWZl+GLQ2Sr7AppCpw7/MPXnKRNOxR3U2NYH2OHDgxykd+uRJZYydStQvOu7zYFZ6wBSJmuEQIt14WsJk1nvw1RoxVvM9cDaQkzXkRun2jNgLpYBl9+5HHQrW5KdBp5S1KHM+YOSwssRiMlDSMs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ElKC23rv; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ElKC23rv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4EB2A1F00893; Mon, 21 Sep 2026 20:01:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790020884; bh=Zg9d2/OMUG70qYu7TGJ+44plepcpjkecBMRJ5CVA3ok=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=ElKC23rvyO1EuK7ppMEoqRlqUUtGVy9Pz99ZAK05LZl3sJAPS75pzvrKqOsPpMgSb FTEy/U2s99jvXjlClKts/61uXJrC7PNs5Epfa9Ml3BSUNVIX4qPifcyM5sI4VnmLVU cm+xh/89Ej/nrPYsQkBbXBOkGWgAAr/hPCA62KX48Znd7jlaSKZKGiH1v2oKkfeYf2 c+/9CXxxMqPaexpw+ptD0gfSJkdiuNr0xZWKWLEYmjtFZkOJocwym4L156YICwZmVM X9C4Hcqq/vLNsn0djO4/LCjOEZ/JH9R+fjbZRDcyxD00LGgKcMemXOFR+XDlM14Y6h oV0lnvOj+dCJQ== From: "David Hildenbrand (Arm)" Date: Mon, 21 Sep 2026 21:59:05 +0200 Subject: [PATCH v2 13/13] mm/memory_hotplug: drop CONFIG_HAVE_ARCH_PFN_VALID handling from pfn_to_online_page() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260921-b4-sparsemem_cleanups-v2-13-54d81d65e125@kernel.org> References: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> In-Reply-To: <20260921-b4-sparsemem_cleanups-v2-0-54d81d65e125@kernel.org> To: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Kairui Song , Qi Zheng , Shakeel Butt , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Baoquan He , Baolin Wang , Brendan Jackman , Johannes Weiner , Zi Yan , Jan Kiszka , Kieran Bingham , Oscar Salvador , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org, driver-core@lists.linux.dev, linux-fsdevel@vger.kernel.org X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1240; i=david@kernel.org; h=from:subject:message-id; bh=wS9y+w2lDfEszO4z/i/MtEKk8SGbU5ElVBcX2HbtZBQ=; b=owGbwMvMwCF2/OVpCdfQ3ZWMp9WSGLI29rTv7z8j2O2UNOnPlhj7adzO/DcSrXuzc8wyL7/j2 fR5wuXDHaUsDGIcDLJiiixBwfcNXr5cV1vtxscMM4eVCWQIAxenAExkdjIjw5OOOasDtXXZFWsu mq11P5rI8LLx5J5zS/rTo17pzi7hnMLI8LBoT8j79/clv2qv5/nSPOHy5oshduf3T1LfdzFzaeN 8AU4A X-Developer-Key: i=david@kernel.org; a=openpgp; fpr=1BD9CAAD735C4C3A460DFCCA4DDE10F700FF835A Drop CONFIG_HAVE_ARCH_PFN_VALID handling, as CONFIG_HAVE_ARCH_PFN_VALID is never used with CONFIG_MEMORY_HOTPLUG, as the latter depends on CONFIG_SPARSEMEM_VMEMMAP. Make sure it stays that way. Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: David Hildenbrand (Arm) Acked-by: Oscar Salvador --- mm/memory_hotplug.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index d7a59167bec43..796af1028ee23 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -345,6 +345,8 @@ struct page *pfn_to_online_page(unsigned long pfn) struct dev_pagemap *pgmap; struct mem_section *ms; =20 + BUILD_BUG_ON(IS_ENABLED(CONFIG_HAVE_ARCH_PFN_VALID)); + if (nr >=3D NR_MEM_SECTIONS) return NULL; =20 @@ -352,13 +354,6 @@ struct page *pfn_to_online_page(unsigned long pfn) if (!online_section(ms)) return NULL; =20 - /* - * Save some code text when online_section() + - * pfn_section_valid() are sufficient. - */ - if (IS_ENABLED(CONFIG_HAVE_ARCH_PFN_VALID) && !pfn_valid(pfn)) - return NULL; - if (!pfn_section_valid(ms, pfn)) return NULL; =20 --=20 2.43.0