Re: [PATCH 06/12] mm/sparse: rename __highest_present_section_nr to __highest_used_section_nr
From: Mike Rapoport
Date: Mon Sep 14 2026 - 05:46:53 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>
>
> 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
... all possible ... maybe?
> + * 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;
> }
Reviewed-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
--
Sincerely yours,
Mike.