[PATCH 11/49] mm: defer sparse_init() until after zone initialization
Mike Rapoport
rppt at kernel.org
Tue Apr 28 17:15:48 AEST 2026
On Sun, Apr 05, 2026 at 08:52:02PM +0800, Muchun Song wrote:
> According to the comment of free_area_init(), its main goal is to
> initialise all pg_data_t and zone data. However, sparse_init() and
> memmap_init() are aimed at allocating vmemmap pages and initializing
> struct page respectively, which differs from the goal of free_area_init().
> Therefore, it is reasonable to move them out of free_area_init().
>
> Call sparse_init() after free_area_init() to guarantee that zone data
> structures are available when sparse_init() executes. This change is a
> prerequisite for integrating vmemmap initialization steps and allows
> sparse_init() to safely access zone information if needed (e.g. HVO case).
>
> Also, move hugetlb reservation functions (hugetlb_cma_reserve() and
> hugetlb_bootmem_alloc()) to be after free_area_init(). This allows
> hugetlb reservation to access zone information to ensure that contiguous
> pages are not allocated across zone boundaries, which simplifies the
> hugetlb code. So this is a preparation for subsequent changes.
>
> Signed-off-by: Muchun Song <songmuchun at bytedance.com>
> ---
> mm/mm_init.c | 15 ++++++++-------
> mm/sparse.c | 3 ---
> 2 files changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/mm/sparse.c b/mm/sparse.c
> index c7f91dc2e5b5..5fe0a7e66775 100644
> --- a/mm/sparse.c
> +++ b/mm/sparse.c
> @@ -406,9 +406,6 @@ void __init sparse_init(void)
> pnum_begin = first_present_section_nr();
> nid_begin = sparse_early_nid(__nr_to_section(pnum_begin));
>
> - /* Setup pageblock_order for HUGETLB_PAGE_SIZE_VARIABLE */
> - set_pageblock_order();
> -
This does not seem related to this patch. Otherwise
Reviewed-by: Mike Rapoport (Microsoft) <rppt at kernel.org>
> for_each_present_section_nr(pnum_begin + 1, pnum_end) {
> int nid = sparse_early_nid(__nr_to_section(pnum_end));
>
> --
> 2.20.1
>
--
Sincerely yours,
Mike.
More information about the Linuxppc-dev
mailing list