* [PATCH 5/6] mm: remove unnecessary empty range check in early_calculate_totalpages()
2026-06-21 14:59 [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops Sang-Heon Jeon
@ 2026-06-21 14:59 ` Sang-Heon Jeon
2026-06-25 8:46 ` Mike Rapoport
2026-06-21 14:59 ` [PATCH 6/6] mm/hugetlb: remove unnecessary empty range check in hugetlb_bootmem_set_nodes() Sang-Heon Jeon
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Sang-Heon Jeon @ 2026-06-21 14:59 UTC (permalink / raw)
To: Mike Rapoport, Andrew Morton; +Cc: Sang-Heon Jeon, linux-mm
early_calculate_totalpages() iterates the memory ranges with
for_each_mem_pfn_range() and calls node_set_state(nid, N_MEMORY) only when
end_pfn - start_pfn is non-zero. for_each_mem_pfn_range() never returns an
empty range, so start_pfn < end_pfn always.
Therefore the check is unnecessary, so remove it.
No functional change.
Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com>
---
mm/mm_init.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 0f64909e8d20..17498a13eb99 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -332,8 +332,7 @@ static unsigned long __init early_calculate_totalpages(void)
unsigned long pages = end_pfn - start_pfn;
totalpages += pages;
- if (pages)
- node_set_state(nid, N_MEMORY);
+ node_set_state(nid, N_MEMORY);
}
return totalpages;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 6/6] mm/hugetlb: remove unnecessary empty range check in hugetlb_bootmem_set_nodes()
2026-06-21 14:59 [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops Sang-Heon Jeon
2026-06-21 14:59 ` [PATCH 5/6] mm: remove unnecessary empty range check in early_calculate_totalpages() Sang-Heon Jeon
@ 2026-06-21 14:59 ` Sang-Heon Jeon
2026-06-22 9:07 ` David Hildenbrand (Arm)
2026-06-25 8:46 ` [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops Mike Rapoport
2026-06-26 8:23 ` Mike Rapoport
3 siblings, 1 reply; 8+ messages in thread
From: Sang-Heon Jeon @ 2026-06-21 14:59 UTC (permalink / raw)
To: Muchun Song, Oscar Salvador, Andrew Morton
Cc: Sang-Heon Jeon, David Hildenbrand, linux-mm
hugetlb_bootmem_set_nodes() iterates the memory ranges with
for_each_mem_pfn_range() and calls node_set(nid, hugetlb_bootmem_nodes)
only when end_pfn > start_pfn. for_each_mem_pfn_range() never returns an
empty range, so start_pfn < end_pfn always.
Therefore the check is unnecessary, so remove it.
No functional change.
Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com>
---
mm/hugetlb.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 571212b80835..d4d4c9df5f51 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -4450,8 +4450,7 @@ void __init hugetlb_bootmem_set_nodes(void)
return;
for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
- if (end_pfn > start_pfn)
- node_set(nid, hugetlb_bootmem_nodes);
+ node_set(nid, hugetlb_bootmem_nodes);
}
}
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH 6/6] mm/hugetlb: remove unnecessary empty range check in hugetlb_bootmem_set_nodes()
2026-06-21 14:59 ` [PATCH 6/6] mm/hugetlb: remove unnecessary empty range check in hugetlb_bootmem_set_nodes() Sang-Heon Jeon
@ 2026-06-22 9:07 ` David Hildenbrand (Arm)
0 siblings, 0 replies; 8+ messages in thread
From: David Hildenbrand (Arm) @ 2026-06-22 9:07 UTC (permalink / raw)
To: Sang-Heon Jeon, Muchun Song, Oscar Salvador, Andrew Morton; +Cc: linux-mm
On 6/21/26 16:59, Sang-Heon Jeon wrote:
> hugetlb_bootmem_set_nodes() iterates the memory ranges with
> for_each_mem_pfn_range() and calls node_set(nid, hugetlb_bootmem_nodes)
> only when end_pfn > start_pfn. for_each_mem_pfn_range() never returns an
> empty range, so start_pfn < end_pfn always.
>
> Therefore the check is unnecessary, so remove it.
>
> No functional change.
>
> Signed-off-by: Sang-Heon Jeon <ekffu200098@gmail.com>
> ---
> mm/hugetlb.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 571212b80835..d4d4c9df5f51 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -4450,8 +4450,7 @@ void __init hugetlb_bootmem_set_nodes(void)
> return;
>
> for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) {
> - if (end_pfn > start_pfn)
> - node_set(nid, hugetlb_bootmem_nodes);
> + node_set(nid, hugetlb_bootmem_nodes);
> }
> }
We have
if (PFN_UP(r->base) >= PFN_DOWN(r->base + r->size))
continue;
...
*out_start_pfn = PFN_UP(r->base);
*out_end_pfn = PFN_DOWN(r->base + r->size);
So we should always have *out_start_pfn < *out_end_pfn
Reviewed-by: David Hildenbrand (Arm) <david@kernel.org>
--
Cheers,
David
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops
2026-06-21 14:59 [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops Sang-Heon Jeon
2026-06-21 14:59 ` [PATCH 5/6] mm: remove unnecessary empty range check in early_calculate_totalpages() Sang-Heon Jeon
2026-06-21 14:59 ` [PATCH 6/6] mm/hugetlb: remove unnecessary empty range check in hugetlb_bootmem_set_nodes() Sang-Heon Jeon
@ 2026-06-25 8:46 ` Mike Rapoport
2026-06-26 8:23 ` Mike Rapoport
3 siblings, 0 replies; 8+ messages in thread
From: Mike Rapoport @ 2026-06-25 8:46 UTC (permalink / raw)
To: Sang-Heon Jeon
Cc: Albert Ou, Andrew Morton, Andrey Ryabinin, Catalin Marinas,
Huacai Chen, Mike Rapoport, Muchun Song, Oscar Salvador,
Palmer Dabbelt, Paul Walmsley, Will Deacon, Alexander Potapenko,
Alexandre Ghiti, Andrey Konovalov, David Hildenbrand,
Dmitry Vyukov, kasan-dev, linux-arm-kernel, linux-mm, linux-riscv,
loongarch, Vincenzo Frascino, WANG Xuerui
On Sun, 21 Jun 2026 23:59:10 +0900, Sang-Heon Jeon <ekffu200098@gmail.com> wrote:
> treewide: remove unnecessary invalid range checks in memblock iteration loops
>
> The memblock API guarantees that for_each_mem_range() and
> for_each_mem_pfn_range() never return an invalid range, meaning start is
> always less than end.
>
> Several memblock callers still have unnecessary invalid range checks in
> their loop bodies, so remove them.
>
> [...]
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops
2026-06-21 14:59 [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops Sang-Heon Jeon
` (2 preceding siblings ...)
2026-06-25 8:46 ` [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops Mike Rapoport
@ 2026-06-26 8:23 ` Mike Rapoport
2026-06-26 10:59 ` Sang-Heon Jeon
3 siblings, 1 reply; 8+ messages in thread
From: Mike Rapoport @ 2026-06-26 8:23 UTC (permalink / raw)
To: Sang-Heon Jeon
Cc: Albert Ou, Andrew Morton, Andrey Ryabinin, Catalin Marinas,
Huacai Chen, Muchun Song, Oscar Salvador, Palmer Dabbelt,
Paul Walmsley, Will Deacon, Alexander Potapenko, Alexandre Ghiti,
Andrey Konovalov, David Hildenbrand, Dmitry Vyukov, kasan-dev,
linux-arm-kernel, linux-mm, linux-riscv, loongarch,
Vincenzo Frascino, WANG Xuerui
On Sun, Jun 21, 2026 at 11:59:10PM +0900, Sang-Heon Jeon wrote:
> The memblock API guarantees that for_each_mem_range() and
> for_each_mem_pfn_range() never return an invalid range, meaning start is
> always less than end.
>
> Several memblock callers still have unnecessary invalid range checks in
> their loop bodies, so remove them.
>
> Sang-Heon Jeon (6):
> arm64: mm: remove unreachable invalid range check in
> kasan_init_shadow()
> LoongArch: remove unreachable invalid range check in kasan_init()
> riscv: remove unreachable invalid range check in
> create_linear_mapping_page_table()
> riscv: remove unreachable invalid range check in kasan_init()
> mm: remove unnecessary empty range check in
> early_calculate_totalpages()
> mm/hugetlb: remove unnecessary empty range check in
> hugetlb_bootmem_set_nodes()
I queued this for inclusion into memblock tree.
> arch/arm64/mm/kasan_init.c | 3 ---
> arch/loongarch/mm/kasan_init.c | 3 ---
> arch/riscv/mm/init.c | 2 --
> arch/riscv/mm/kasan_init.c | 3 ---
> mm/hugetlb.c | 3 +--
> mm/mm_init.c | 3 +--
> 6 files changed, 2 insertions(+), 15 deletions(-)
>
> --
> 2.43.0
>
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 0/6] treewide: remove unnecessary invalid range checks in memblock iteration loops
2026-06-26 8:23 ` Mike Rapoport
@ 2026-06-26 10:59 ` Sang-Heon Jeon
0 siblings, 0 replies; 8+ messages in thread
From: Sang-Heon Jeon @ 2026-06-26 10:59 UTC (permalink / raw)
To: Mike Rapoport
Cc: Albert Ou, Andrew Morton, Andrey Ryabinin, Catalin Marinas,
Huacai Chen, Muchun Song, Oscar Salvador, Palmer Dabbelt,
Paul Walmsley, Will Deacon, Alexander Potapenko, Alexandre Ghiti,
Andrey Konovalov, David Hildenbrand, Dmitry Vyukov, kasan-dev,
linux-arm-kernel, linux-mm, linux-riscv, loongarch,
Vincenzo Frascino, WANG Xuerui
On Fri, Jun 26, 2026 at 5:23 PM Mike Rapoport <rppt@kernel.org> wrote:
>
> On Sun, Jun 21, 2026 at 11:59:10PM +0900, Sang-Heon Jeon wrote:
> > The memblock API guarantees that for_each_mem_range() and
> > for_each_mem_pfn_range() never return an invalid range, meaning start is
> > always less than end.
> >
> > Several memblock callers still have unnecessary invalid range checks in
> > their loop bodies, so remove them.
> >
> > Sang-Heon Jeon (6):
> > arm64: mm: remove unreachable invalid range check in
> > kasan_init_shadow()
> > LoongArch: remove unreachable invalid range check in kasan_init()
> > riscv: remove unreachable invalid range check in
> > create_linear_mapping_page_table()
> > riscv: remove unreachable invalid range check in kasan_init()
> > mm: remove unnecessary empty range check in
> > early_calculate_totalpages()
> > mm/hugetlb: remove unnecessary empty range check in
> > hugetlb_bootmem_set_nodes()
>
> I queued this for inclusion into memblock tree.
Thank you, Mike.
Could you please review and queue this patch [1] as well? It does the
same kind of clean up, I just missed it at the time.
[1] https://lore.kernel.org/all/20260626032902.703944-1-ekffu200098@gmail.com/
> > arch/arm64/mm/kasan_init.c | 3 ---
> > arch/loongarch/mm/kasan_init.c | 3 ---
> > arch/riscv/mm/init.c | 2 --
> > arch/riscv/mm/kasan_init.c | 3 ---
> > mm/hugetlb.c | 3 +--
> > mm/mm_init.c | 3 +--
> > 6 files changed, 2 insertions(+), 15 deletions(-)
> >
> > --
> > 2.43.0
> >
>
> --
> Sincerely yours,
> Mike.
Best Regards,
Sang-Heon Jeon
^ permalink raw reply [flat|nested] 8+ messages in thread