From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 677904ADD8B for ; Thu, 2 Jul 2026 09:42:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782985322; cv=none; b=Cxk6igZafvpMcw7Y7FZOIu393kUR9CEwYBf/rwHQPAN8YOIHYvU8o8lwJ5e6IGO0+RXIiWCpWiEjbEEyNEpguxFKsavkGOtRID2/3ySk0kLPcPQgtwoDl8cbX5Sj/gAhlEA+tuR08BuM9mq/uTUvOKGjmG6zrMkShl9l6lbGqcM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782985322; c=relaxed/simple; bh=jjstckhnPixjtarsGYYw7CWukWwI/JMXUFYias9bgXE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FxSTW5U/g4sWJok8AhJbVWWHs6e5o8bmZoJNq1cl4FZysRIKnIOBsFrqWXhL07jaHWUtEQqo+frny7kVXfVZsmlnGa7/L2Tq4uAppmmeS/nwxU66PtVxp9Zgh1OUSEHXH3FTIgEJSL6vR57yKdNK9RDmqTh5ZBYrFsYJpeZZ+0I= 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=S9+popou; arc=none smtp.client-ip=209.85.214.176 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="S9+popou" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2caa57a41cdso4663835ad.1 for ; Thu, 02 Jul 2026 02:42:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1782985321; x=1783590121; 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=bLq8N+E+uEkfQPEQaWxrvcWiws6ksIqOpJa3tHGIXlg=; b=S9+popoumB+ZWsN/S6bfmHQJzFAymkbJmr6ZLhzmSnhU8bU9uh2swU1JSNmJio0QSu 9lIql2OJKRlVJI3lqZBQsN9APUQqc4Z9k03Dggf6eWUZWHm2EyinhdvH9tYFDkYREO1d M8uEmo+dtBrte5oOQshLXqPMYVOZqmLWuu+TI9d6gNLFJwLmaztD2bQn7cy5mufNsjhp 06ayd+tOgn0tIIts4kmZtgvYOAwZE0VmcrJYOGx7dF9JTEe2B4K0kZIB4TEEv+hlDG6C PSCIoolm9zZJpIw0h03bZaUFkVFT/wVsifh2+Tf9ixCKlrANnloyAEnXFEAMNAxyrpk/ fItA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782985321; x=1783590121; 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=bLq8N+E+uEkfQPEQaWxrvcWiws6ksIqOpJa3tHGIXlg=; b=N30iWwTFuiG/OXYwSwbNniL9T1otFSAiU/3tpIq6WWkMDOJ2lKWOedKPeCw6qxED8Z Bn8brJsPVa+nJuAxa8HiM45iEd5Qh40+kv0/OpAOWPwRVw68rysqsdMmx41Ez5BRUTIU I/NJnpKTFd2JjmJTJaX6UvrGFWthO+7av04NdV/goydMnk15WSJBV3BHo8+xfO1zYd71 CEIwrhujVKq8xBzOwx6F5VhwaC17lZTxpgstfCalo3FFEy2ooZH5P3kizKAmxtzf0awg HaDAz7ye3/I3+70YKk1YQjGquVv4Ay7ltJE/KmLQWPU1+N2Its/1uc1HNLNItOwkuGvv Vo5g== X-Forwarded-Encrypted: i=1; AHgh+RoRhlB5oqRdvClb2cU+KLeANFwsftmZAmxPqyM+EYWgvajBCv7L6bpcVJTVV5qT7k7C7Za0XwEpCj3JmXU=@vger.kernel.org X-Gm-Message-State: AOJu0Yyw/NG/VMbXHzJNQKo90m7fz9H8ngZKZ5oBLLe3T/1W1JGb8bTR t1koM4Z/a1iVWlAhcFxqQon1lf74SCppnOQ4VjEqQmfHZf4pbPduh3Vr3i1l9oUWH4E= X-Gm-Gg: AfdE7ckwQVM6y4fDQXaVODgBXq2xl3w1nlv25tvuQL3ossD+b6yVNQuPa0Djoj+m1s7 P5RJuy2L1bHAT+6Z9ApB2CnghnfUcs56hWTwNGVUyXZXnOatcDBq1h84SFLdTDdv9QT1WGIC0Rs FZAhntu71RMMkrCincuFFPobUFdVk0JxlXoyRQrBAymwfr92yaT/sTKM+MGXbrEAoZ+S+sIbsr6 cNV/s9uIcQ47UJfNnXkeHPib8fGi3iQAMJD+7QdXGZRUq0fcvFrE8z3SCGlm1CG5EyyfvkAWzhq nD7Up6Nfj9/5lkUy07wfy6guPXicixdHBXZgJp8Hc/WUuesawb/7K/WzDkqYh85sG8lwpIRHwtL 0RxWn0halzuSPpLhJxyHvOxYT1LwIW67S2RkN+HEbSQhVsefEAql3rrI09pyJ3Qfyq2GsgLed68 3H1aKTZ21iwRotfgbcmdXicKocf9YEXGbq X-Received: by 2002:a17:903:186:b0:2c9:b8e5:5741 with SMTP id d9443c01a7336-2ca7e872a9cmr62303015ad.35.1782985320475; Thu, 02 Jul 2026 02:42:00 -0700 (PDT) Received: from n232-176-004.byted.org ([36.110.163.98]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ca9a8f8458sm10971085ad.18.2026.07.02.02.41.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Jul 2026 02:42:00 -0700 (PDT) From: Muchun Song To: Andrew Morton , Oscar Salvador , David Hildenbrand , linux-mm@kvack.org Cc: Mike Rapoport , Vlastimil Babka , Lorenzo Stoakes , Michal Hocko , linux-kernel@vger.kernel.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH 10/17] mm/mm_init: factor out pfn_to_zone() Date: Thu, 2 Jul 2026 17:38:14 +0800 Message-ID: <20260702093821.2740183-11-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260702093821.2740183-1-songmuchun@bytedance.com> References: <20260702093821.2740183-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 pfn_to_zone() in sparse-vmemmap.c duplicates the zone lookup logic in __init_deferred_page(). Move it to mm_init.c, declare it in mm/internal.h, and reuse it from __init_deferred_page() instead of open-coding the zone walk there. Signed-off-by: Muchun Song --- mm/internal.h | 1 + mm/mm_init.c | 28 ++++++++++++++++++---------- mm/sparse-vmemmap.c | 14 -------------- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 11844b40f47a..1348c8bb18e0 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1360,6 +1360,7 @@ static inline bool deferred_pages_enabled(void) } #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */ +struct zone *pfn_to_zone(unsigned long pfn, int nid); void init_deferred_page(unsigned long pfn, int nid); enum mminit_level { diff --git a/mm/mm_init.c b/mm/mm_init.c index 0256ab4ba839..69ececb591e2 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -689,6 +689,20 @@ static __meminit void pageblock_migratetype_init_range(unsigned long pfn, } } +struct zone __meminit *pfn_to_zone(unsigned long pfn, int nid) +{ + pg_data_t *pgdat = NODE_DATA(nid); + + for (enum zone_type zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) { + struct zone *zone = &pgdat->node_zones[zone_type]; + + if (zone_spans_pfn(zone, pfn)) + return zone; + } + + return NULL; +} + #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT static inline void pgdat_set_deferred_range(pg_data_t *pgdat) { @@ -747,20 +761,14 @@ defer_init(int nid, unsigned long pfn, unsigned long end_pfn) static void __meminit __init_deferred_page(unsigned long pfn, int nid) { - pg_data_t *pgdat = NODE_DATA(nid); - int zid; + struct zone *zone; if (early_page_initialised(pfn, nid)) return; - for (zid = 0; zid < MAX_NR_ZONES; zid++) { - struct zone *zone = &pgdat->node_zones[zid]; - - if (zone_spans_pfn(zone, pfn)) - break; - } - __init_single_page(pfn_to_page(pfn), pfn, zid, nid); - + zone = pfn_to_zone(pfn, nid); + __init_single_page(pfn_to_page(pfn), pfn, + zone ? zone_idx(zone) : MAX_NR_ZONES, nid); if (pageblock_aligned(pfn)) { enum migratetype mt = kho_scratch_migratetype(pfn, MIGRATE_MOVABLE); diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 90aa11c472d6..37afd5ccf260 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -144,20 +144,6 @@ void __meminit vmemmap_verify(pte_t *pte, int node, start, end - 1); } -static struct zone __meminit *pfn_to_zone(unsigned long pfn, int nid) -{ - pg_data_t *pgdat = NODE_DATA(nid); - - for (enum zone_type zone_type = 0; zone_type < MAX_NR_ZONES; zone_type++) { - struct zone *zone = &pgdat->node_zones[zone_type]; - - if (zone_spans_pfn(zone, pfn)) - return zone; - } - - return NULL; -} - static __meminit struct page *vmemmap_get_tail(unsigned int order, struct zone *zone); static pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node, -- 2.54.0