From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 02D9E25D1E9 for ; Wed, 13 May 2026 13:08:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778677694; cv=none; b=fPREkYqVBzNonb8bD+d8UoXH1cGVSazFBEPBsLjQACilCWqip2oLSoGXP8vWEKUGIjv9U+d058EPXnFUmQl+f1pn9adfWxkvBtB9OjP19g3lswlMGLC4XJYjItmHfUyWiFl4HLUoUny7tuE/uQGcoJM3fx2n/x4h9K9VEbk+++I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778677694; c=relaxed/simple; bh=Oa8kNkiDXWpN2/6+kq+iz6SpoUzOwPcInNrLeqe4pkc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BCAlLn1U9oTmYy0/5J0X06sm9tCB7HhbiXua279SCrs1CBq/mSvSe3tzf+SDvP7PkJ/3tgjJci/VOMyQZozvLzsdAmnwesqWSX3rtPFhNo7BHYZcC1KOAMgUKPGkb1Zn3C5sNQxlbiGQKCsz93mmlT1U6aBNVYfKfpanbRqEgnM= 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=jstRClEa; arc=none smtp.client-ip=209.85.214.171 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="jstRClEa" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-2b941cd869cso42525245ad.1 for ; Wed, 13 May 2026 06:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1778677692; x=1779282492; 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; bh=5UyK7iOrAjDiLiKTgZmma+Goz9i15/Iarg4XyDf9KyI=; b=jstRClEazPbHRffYXeadpqx82HR5Gv+hGckV62CKNab/vUmUp4pQ7DI9M5UKs46MvM ilmZlU94JocOKiX6a+r3Xun+tP4z6z27xbcUHEuAK5kBnKHQkCyiKoj+b5HjL/R34L9L LxURm1LtlL2U7qcyKTiHQ7qmLmEpCoTSGXZ35jL44a/QaRIJbWL/b3grQftKWqAw29JL V2IkYs4RdhRUJu4fDTwpNtZyndaVIb8R03vytUHrPSG+TK3zWeONeyWaxvvP7u8zd0Cn M+W5dRPf3IsQrZqTry9bWRUTyVa+E4/Jfj+s37TJupvyvV23YIPPdxvJhknfVdvppABf bxMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778677692; x=1779282492; 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; bh=5UyK7iOrAjDiLiKTgZmma+Goz9i15/Iarg4XyDf9KyI=; b=U4aTxJcFzMIxSLVh9pa3XbAnfT+uAr2tRqEQRaoy/FpIghWGRrjyfduLdRkiDtfMt1 0XpWhoElrp9PbKjKN/0Vz9rzW2NCq0umDxbm9b25KSkNobgC3g4bmJ2UzNjhLEVMcHcv q/Kv4Ebh0YJN+/8q2T09HFZoQ8av+3DKG2bb+6z0gTysN9T8q/4DU8gEM49evINYgfBJ cmxfR1+gxGqqMA2hlxI8/XkCwysqSq1sp2aopEg3ZVaBhViZGVRNFByCgoTBAld19ApC sSdd6fybci4JDMRyhQl21qLWiWoU1a8Wf1EIXDn3wj5Cli+UJpsM2/5Acd0r9Uibbw2l mzlA== X-Forwarded-Encrypted: i=1; AFNElJ8pYxD8/N1Zuqi7g4LfmWL+fdOs5TSxutTNHNu8z6DEwGv2uvRShqm+QP8M/xhcTRw7ETTaqhxM1fG88Wg=@vger.kernel.org X-Gm-Message-State: AOJu0YyHnwR9q5PrrhltHpDpaEAU7Df7+2tov3IOTiEpEzX0rFP+DuLL rSVQLhMTS1YFLeXQj0DlPDer840GBxjal/HQ/IZwRjoJ3N8vrAz4B7M1gngeZTJODy4= X-Gm-Gg: Acq92OHup6zb35zZxOAitJz5kxcZXhWMt+TaFe1HnbBgvg/uYP6A0H6iwDmtXwKefht 5yZij+ZEtozgjbYjHyk4CkCo2dxmB2BvX2gNpU1PzG+R8HNdYSV+JXMl2ZcS9Be6gPLoLwYrtTF KiPFQ17iZfHpK+mYtiTEKLyrIqsCUHaT5QDExibiw9AFL7t2NCJQr4LIeNx0WFqGDPpMtVOZCev 1CQ/K5gVme464rjPaBvasI3bbs5QfhdgIPxHzQPex+Csz3c6ab+XsCGj6cvUrP61+2ctr6lDyNN fhC48YS16yQ0k+mX0+P7sjtmPfrDbVfWRdsXjrhyP9KBH+8Dv93sfNnGr49JK/U78pk6zAKG0vY aXsd0SMH59/JBskOV0Xxojpfb7OhyqMWQxRE08sJEsO+HHTEL9AM24RQEmL6JEtOzJVntd0NN32 2cE2AJ1HodMG8iBJUcJ42NxoTFjKqEAb2XhcVD/qHkxc7/Yn/amSMIRQLs9MA= X-Received: by 2002:a17:903:290f:b0:2b2:539b:d2b1 with SMTP id d9443c01a7336-2bd2f6071femr19430235ad.16.1778677691580; Wed, 13 May 2026 06:08:11 -0700 (PDT) Received: from PXLDJ45XCM.bytedance.net ([61.213.176.6]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1e90854sm166641925ad.66.2026.05.13.06.08.06 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 13 May 2026 06:08:11 -0700 (PDT) From: Muchun Song To: Andrew Morton , David Hildenbrand , Muchun Song , Oscar Salvador , Michael Ellerman , Madhavan Srinivasan Cc: Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Nicholas Piggin , Christophe Leroy , Ackerley Tng , Frank van der Linden , aneesh.kumar@linux.ibm.com, joao.m.martins@oracle.com, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Muchun Song Subject: [PATCH v2 07/69] mm/sparse: Move subsection_map_init() into sparse_init() Date: Wed, 13 May 2026 21:04:35 +0800 Message-ID: <20260513130542.35604-8-songmuchun@bytedance.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260513130542.35604-1-songmuchun@bytedance.com> References: <20260513130542.35604-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: 8bit subsection_map_init() is part of sparse memory initialization, but it is currently called from free_area_init(). Move it into sparse_init() so the sparse-specific setup stays together instead of being split across the generic free_area_init() path. Signed-off-by: Muchun Song Acked-by: Mike Rapoport (Microsoft) --- v1->v2: - Add Acked-by from Mike Rapoport --- mm/internal.h | 5 ++--- mm/mm_init.c | 10 ++-------- mm/sparse-vmemmap.c | 11 ++++++++++- mm/sparse.c | 1 + 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 5a2ddcf68e0b..28d179cbc451 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1003,10 +1003,9 @@ static inline void sparse_init(void) {} * mm/sparse-vmemmap.c */ #ifdef CONFIG_SPARSEMEM_VMEMMAP -void sparse_init_subsection_map(unsigned long pfn, unsigned long nr_pages); +void sparse_init_subsection_map(void); #else -static inline void sparse_init_subsection_map(unsigned long pfn, - unsigned long nr_pages) +static inline void sparse_init_subsection_map(void) { } #endif /* CONFIG_SPARSEMEM_VMEMMAP */ diff --git a/mm/mm_init.c b/mm/mm_init.c index 96e0f2d8c3ea..12fe21c4e26c 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1876,18 +1876,12 @@ static void __init free_area_init(void) (u64)zone_movable_pfn[i] << PAGE_SHIFT); } - /* - * Print out the early node map, and initialize the - * subsection-map relative to active online memory ranges to - * enable future "sub-section" extensions of the memory map. - */ + /* Print out the early node map. */ pr_info("Early memory node ranges\n"); - for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) { + for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) pr_info(" node %3d: [mem %#018Lx-%#018Lx]\n", nid, (u64)start_pfn << PAGE_SHIFT, ((u64)end_pfn << PAGE_SHIFT) - 1); - sparse_init_subsection_map(start_pfn, end_pfn - start_pfn); - } /* Initialise every node */ mminit_verify_pageflags_layout(); diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 112ccf9c71ca..fcf0ce5212f1 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -596,7 +596,7 @@ static void subsection_mask_set(unsigned long *map, unsigned long pfn, bitmap_set(map, idx, end - idx + 1); } -void __init sparse_init_subsection_map(unsigned long pfn, unsigned long nr_pages) +static void __init sparse_init_subsection_map_range(unsigned long pfn, unsigned long nr_pages) { int end_sec_nr = pfn_to_section_nr(pfn + nr_pages - 1); unsigned long nr, start_sec_nr = pfn_to_section_nr(pfn); @@ -619,6 +619,15 @@ void __init sparse_init_subsection_map(unsigned long pfn, unsigned long nr_pages } } +void __init sparse_init_subsection_map(void) +{ + int i, nid; + unsigned long start, end; + + for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) + sparse_init_subsection_map_range(start, end - start); +} + #ifdef CONFIG_MEMORY_HOTPLUG /* Mark all memory sections within the pfn range as online */ diff --git a/mm/sparse.c b/mm/sparse.c index c92bbc3f3aa3..85557ef387c7 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -361,5 +361,6 @@ void __init sparse_init(void) } /* cover the last node */ sparse_init_nid(nid_begin, pnum_begin, pnum_end, map_count); + sparse_init_subsection_map(); vmemmap_populate_print_last(); } -- 2.54.0