[PATCH 06/12] mm/sparse: rename __highest_present_section_nr to __highest_used_section_nr
From: David Hildenbrand (Arm)
Date: Wed Sep 09 2026 - 09:56:37 EST
In preparation for getting rid of SECTION_MARKED_PRESENT, rename
__highest_present_section_nr and clarify the comment.
Signed-off-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
---
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 c9ae7991a8b20..19296e8ef44f8 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -2170,7 +2170,7 @@ static inline struct mem_section *__pfn_to_section(unsigned long pfn)
return __nr_to_section(pfn_to_section_nr(pfn));
}
-extern unsigned long __highest_present_section_nr;
+extern unsigned long __highest_used_section_nr;
static inline int subsection_map_index(unsigned long pfn)
{
@@ -2269,7 +2269,7 @@ static inline unsigned long first_valid_pfn(unsigned long pfn, unsigned long end
rcu_read_lock_sched();
- while (nr <= __highest_present_section_nr && pfn < end_pfn) {
+ while (nr <= __highest_used_section_nr && pfn < end_pfn) {
struct mem_section *ms = __pfn_to_section(pfn);
if (valid_section(ms) &&
@@ -2324,7 +2324,7 @@ static inline int pfn_in_present_section(unsigned long pfn)
static inline unsigned long next_present_section_nr(unsigned long section_nr)
{
- while (++section_nr <= __highest_present_section_nr) {
+ while (++section_nr <= __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 long start_pfn)
if (online_section_nr(start_nr))
return 0;
- while (++start_nr <= __highest_present_section_nr) {
+ while (++start_nr <= __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 f84bfceb53060..2b41ae36f20b8 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -164,15 +164,11 @@ static void __init mminit_validate_memmodel_limits(unsigned long *start_pfn,
}
/*
- * 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 memory sections is expensive, especially if NR_MEM_SECTIONS
+ * is large but only a fraction is actually used. Keep track of the highest
+ * section number we ever used.
*/
-unsigned long __highest_present_section_nr;
+unsigned long __highest_used_section_nr;
static inline unsigned long first_present_section_nr(void)
{
diff --git a/mm/sparse.h b/mm/sparse.h
index 744ae29002f5e..7c5d82ceb7142 100644
--- a/mm/sparse.h
+++ b/mm/sparse.h
@@ -114,8 +114,8 @@ static inline void sparse_init_one_section(struct mem_section *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 = section_nr;
+ if (section_nr > __highest_used_section_nr)
+ __highest_used_section_nr = section_nr;
ms->section_mem_map |= SECTION_MARKED_PRESENT;
}
--
2.43.0