From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>,
Lorenzo Stoakes <ljs@kernel.org>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Mike Rapoport <rppt@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>, Kairui Song <kasong@tencent.com>,
Qi Zheng <qi.zheng@linux.dev>,
Shakeel Butt <shakeel.butt@linux.dev>,
Barry Song <baohua@kernel.org>,
Axel Rasmussen <axelrasmussen@google.com>,
Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
Baoquan He <baoquan.he@linux.dev>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Brendan Jackman <brendan.jackman@linux.dev>,
Johannes Weiner <hannes@cmpxchg.org>, Zi Yan <ziy@nvidia.com>,
Oscar Salvador <osalvador@suse.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>,
Jan Kiszka <jan.kiszka@siemens.com>,
Kieran Bingham <kbingham@kernel.org>
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
Subject: Re: [PATCH 08/12] mm/sparse: move __highest_used_section_nr handling
Date: Wed, 9 Sep 2026 16:44:24 +0200 [thread overview]
Message-ID: <0a7c5147-c193-417d-b1e0-203d9de11247@kernel.org> (raw)
In-Reply-To: <20260909-b4-sparsemem_cleanups-v1-8-008fc8d579fe@kernel.org>
On 9/9/26 15:33, David Hildenbrand (Arm) wrote:
> Let's move it to sparse_init_one_section(). However, to keep early
> boot processing working, we also have to initialize it in
> sparse_sections_init().
>
> Should we use READ_ONCE/WRITE_ONCE with __highest_used_section_nr?
> Probably, something for another day.
>
> Signed-off-by: David Hildenbrand (Arm) <david@kernel.org>
> ---
> mm/sparse.c | 5 +++--
> mm/sparse.h | 6 +++---
> 2 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/mm/sparse.c b/mm/sparse.c
> index 2b41ae36f20b8..2d0f2db34f4cf 100644
> --- a/mm/sparse.c
> +++ b/mm/sparse.c
> @@ -177,7 +177,7 @@ static inline unsigned long first_present_section_nr(void)
>
> 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;
>
> sparse_extreme_init();
> @@ -187,9 +187,9 @@ void __init sparse_sections_init(void)
> mminit_validate_memmodel_limits(&start_pfn, &end_pfn);
>
> for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
> - unsigned long section_nr = pfn_to_section_nr(pfn);
> struct mem_section *ms;
>
> + section_nr = pfn_to_section_nr(pfn);
> sparse_index_init(section_nr, nid);
> ms = __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 = section_nr;
> }
Sashiko says that section_nr could be used uninitialized if the loop body
doesn't run.
Certainly a very high regression.
In a universe where a machine can boot without any memory?
"This could occur if mminit_validate_memmodel_limits() clamps
start_pfn and end_pfn to the same value, or if for_each_mem_pfn_range()
yields no memory ranges."
I think this can be ignored.
Sashiko also thinks it found a pre-existing issue when updating
ms->section_mem_map in sparse_init_one_section() when subsections already exist.
That would be the case during ZONE_DEVICE hotplug only. Likely we should skip
the sparse_init_one_section() if already initialized. I'll add this to my todo,
but it has low priority.
--
Cheers,
David
next prev parent reply other threads:[~2026-09-09 14:44 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-09 13:32 [PATCH 00/12] mm/sparse: remove SECTION_MARKED_PRESENT and further cleanups David Hildenbrand (Arm)
2026-09-09 13:32 ` [PATCH 01/12] mm/sparse: move mem_section init to sparse_extreme_init() David Hildenbrand (Arm)
2026-09-09 17:02 ` Oscar Salvador (SUSE)
2026-09-10 12:52 ` Lorenzo Stoakes (ARM)
2026-09-10 13:13 ` David Hildenbrand (Arm)
2026-09-10 13:33 ` Lorenzo Stoakes (ARM)
2026-09-09 13:32 ` [PATCH 02/12] mm/sparse: refactor sparse_sections_init() David Hildenbrand (Arm)
2026-09-09 17:09 ` Oscar Salvador (SUSE)
2026-09-09 17:18 ` David Hildenbrand (Arm)
2026-09-10 13:29 ` Lorenzo Stoakes (ARM)
2026-09-10 14:30 ` David Hildenbrand (Arm)
2026-09-10 14:38 ` Lorenzo Stoakes (ARM)
2026-09-09 13:32 ` [PATCH 03/12] mm/sparse: move initialization of section metadata to sparse_metadata_init() David Hildenbrand (Arm)
2026-09-09 17:22 ` Oscar Salvador (SUSE)
2026-09-10 13:43 ` Lorenzo Stoakes (ARM)
2026-09-09 13:32 ` [PATCH 04/12] mm/sparse: rename and cleanup sparse_init_nid() David Hildenbrand (Arm)
2026-09-10 7:41 ` Oscar Salvador (SUSE)
2026-09-10 13:46 ` Lorenzo Stoakes (ARM)
2026-09-10 14:29 ` David Hildenbrand (Arm)
2026-09-09 13:32 ` [PATCH 05/12] mm/sparse: cleanup sparse_init_one_section() David Hildenbrand (Arm)
2026-09-10 7:45 ` Oscar Salvador (SUSE)
2026-09-10 13:47 ` Lorenzo Stoakes (ARM)
2026-09-09 13:32 ` [PATCH 06/12] mm/sparse: rename __highest_present_section_nr to __highest_used_section_nr David Hildenbrand (Arm)
2026-09-10 7:56 ` Oscar Salvador (SUSE)
2026-09-10 13:49 ` Lorenzo Stoakes (ARM)
2026-09-09 13:33 ` [PATCH 07/12] mm/sparse: remove pfn_in_present_section() David Hildenbrand (Arm)
2026-09-10 7:59 ` Oscar Salvador (SUSE)
2026-09-10 13:50 ` Lorenzo Stoakes (ARM)
2026-09-09 13:33 ` [PATCH 08/12] mm/sparse: move __highest_used_section_nr handling David Hildenbrand (Arm)
2026-09-09 14:06 ` sashiko-bot
2026-09-09 14:44 ` David Hildenbrand (Arm) [this message]
2026-09-10 8:33 ` Oscar Salvador (SUSE)
2026-09-10 9:13 ` David Hildenbrand (Arm)
2026-09-10 12:08 ` Oscar Salvador (SUSE)
2026-09-10 13:33 ` David Hildenbrand (Arm)
2026-09-10 14:16 ` Lorenzo Stoakes (ARM)
2026-09-10 14:29 ` David Hildenbrand (Arm)
2026-09-10 14:51 ` Lorenzo Stoakes (ARM)
2026-09-09 13:33 ` [PATCH 09/12] mm/sparse: remove SECTION_MARKED_PRESENT David Hildenbrand (Arm)
2026-09-10 12:15 ` Oscar Salvador (SUSE)
2026-09-10 14:32 ` Lorenzo Stoakes (ARM)
2026-09-10 15:11 ` David Hildenbrand (Arm)
2026-09-09 13:33 ` [PATCH 10/12] mm/sparse: remove flags parameter from sparse_init_one_section() David Hildenbrand (Arm)
2026-09-10 12:34 ` Oscar Salvador (SUSE)
2026-09-10 14:34 ` Lorenzo Stoakes (ARM)
2026-09-09 13:33 ` [PATCH 11/12] fs/proc/page: clarify comment in get_max_dump_pfn() David Hildenbrand (Arm)
2026-09-10 12:46 ` Oscar Salvador (SUSE)
2026-09-10 14:41 ` Lorenzo Stoakes (ARM)
2026-09-10 15:14 ` David Hildenbrand (Arm)
2026-09-09 13:33 ` [PATCH 12/12] mm/memory_hotplug: drop CONFIG_HAVE_ARCH_PFN_VALID handling from pfn_to_online_page() David Hildenbrand (Arm)
2026-09-10 14:47 ` Lorenzo Stoakes (ARM)
2026-09-10 15:15 ` David Hildenbrand (Arm)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0a7c5147-c193-417d-b1e0-203d9de11247@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=axelrasmussen@google.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=baoquan.he@linux.dev \
--cc=brendan.jackman@linux.dev \
--cc=dakr@kernel.org \
--cc=driver-core@lists.linux.dev \
--cc=gregkh@linuxfoundation.org \
--cc=hannes@cmpxchg.org \
--cc=jan.kiszka@siemens.com \
--cc=kasong@tencent.com \
--cc=kbingham@kernel.org \
--cc=liam@infradead.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=osalvador@suse.de \
--cc=qi.zheng@linux.dev \
--cc=rafael@kernel.org \
--cc=rppt@kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
--cc=weixugc@google.com \
--cc=yuanchu@google.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.