include/linux/mmzone.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
When CONFIG_SPARSEMEM is disabled, the macro
sparse_vmemmap_init_nid_early(_nid, _use) passes
two arguments, while the actual function accepts
only nid. Drop the extra argument _use.
Fixes: d65917c42373 ("mm/sparse: allow for alternate vmemmap section init at boot")
Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
---
include/linux/mmzone.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 7fb7331c5725..f6dd181a4821 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -2293,7 +2293,7 @@ void sparse_init(void);
#else
#define sparse_init() do {} while (0)
#define sparse_index_init(_sec, _nid) do {} while (0)
-#define sparse_vmemmap_init_nid_early(_nid, _use) do {} while (0)
+#define sparse_vmemmap_init_nid_early(_nid) do {} while (0)
#define sparse_vmemmap_init_nid_late(_nid) do {} while (0)
#define pfn_in_present_section pfn_valid
#define subsection_map_init(_pfn, _nr_pages) do {} while (0)
--
2.20.1
On 11/27/25 10:25, Jinhui Guo wrote:
> When CONFIG_SPARSEMEM is disabled, the macro
> sparse_vmemmap_init_nid_early(_nid, _use) passes
> two arguments, while the actual function accepts
> only nid. Drop the extra argument _use.
>
> Fixes: d65917c42373 ("mm/sparse: allow for alternate vmemmap section init at boot")
> Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
> ---
> include/linux/mmzone.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index 7fb7331c5725..f6dd181a4821 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -2293,7 +2293,7 @@ void sparse_init(void);
> #else
> #define sparse_init() do {} while (0)
> #define sparse_index_init(_sec, _nid) do {} while (0)
> -#define sparse_vmemmap_init_nid_early(_nid, _use) do {} while (0)
> +#define sparse_vmemmap_init_nid_early(_nid) do {} while (0)
> #define sparse_vmemmap_init_nid_late(_nid) do {} while (0)
> #define pfn_in_present_section pfn_valid
> #define subsection_map_init(_pfn, _nr_pages) do {} while (0)
That commit is from early 2025.
So what are the symptoms we are fixing? I would have assumed a
compile-time problem, but no built bot caught that?
--
Cheers
David
Hi, David
On Thu, Nov 27, 2025 at 10:46:54AM +0100, David Hildenbrand (Red Hat) wrote:
> On 11/27/25 10:25, Jinhui Guo wrote:
> > When CONFIG_SPARSEMEM is disabled, the macro
> > sparse_vmemmap_init_nid_early(_nid, _use) passes
> > two arguments, while the actual function accepts
> > only nid. Drop the extra argument _use.
> >
> > Fixes: d65917c42373 ("mm/sparse: allow for alternate vmemmap section init at boot")
> > Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
> > ---
> > include/linux/mmzone.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > index 7fb7331c5725..f6dd181a4821 100644
> > --- a/include/linux/mmzone.h
> > +++ b/include/linux/mmzone.h
> > @@ -2293,7 +2293,7 @@ void sparse_init(void);
> > #else
> > #define sparse_init() do {} while (0)
> > #define sparse_index_init(_sec, _nid) do {} while (0)
> > -#define sparse_vmemmap_init_nid_early(_nid, _use) do {} while (0)
> > +#define sparse_vmemmap_init_nid_early(_nid) do {} while (0)
> > #define sparse_vmemmap_init_nid_late(_nid) do {} while (0)
> > #define pfn_in_present_section pfn_valid
> > #define subsection_map_init(_pfn, _nr_pages) do {} while (0)
>
> That commit is from early 2025.
>
> So what are the symptoms we are fixing? I would have assumed a compile-time
> problem, but no built bot caught that?
I spotted the issue while porting the patches. It’s harmless. Both
sparse_index_init() and sparse_vmemmap_init_nid_early() are only
referenced in mm/sparse.c and mm/sparse-vmemmap.c. So they can simply
be deleted from include/linux/mmzone.h when CONFIG_SPARSEMEM is disabled.
> --
> Cheers
> David
--
Best regards,
Jinhui
On Thu, Nov 27, 2025 at 10:46:54AM +0100, David Hildenbrand (Red Hat) wrote:
> On 11/27/25 10:25, Jinhui Guo wrote:
> > When CONFIG_SPARSEMEM is disabled, the macro
> > sparse_vmemmap_init_nid_early(_nid, _use) passes
> > two arguments, while the actual function accepts
> > only nid. Drop the extra argument _use.
> >
> > Fixes: d65917c42373 ("mm/sparse: allow for alternate vmemmap section init at boot")
> > Signed-off-by: Jinhui Guo <guojinhui.liam@bytedance.com>
> > ---
> > include/linux/mmzone.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > index 7fb7331c5725..f6dd181a4821 100644
> > --- a/include/linux/mmzone.h
> > +++ b/include/linux/mmzone.h
> > @@ -2293,7 +2293,7 @@ void sparse_init(void);
> > #else
> > #define sparse_init() do {} while (0)
> > #define sparse_index_init(_sec, _nid) do {} while (0)
> > -#define sparse_vmemmap_init_nid_early(_nid, _use) do {} while (0)
> > +#define sparse_vmemmap_init_nid_early(_nid) do {} while (0)
> > #define sparse_vmemmap_init_nid_late(_nid) do {} while (0)
> > #define pfn_in_present_section pfn_valid
> > #define subsection_map_init(_pfn, _nr_pages) do {} while (0)
>
> That commit is from early 2025.
>
> So what are the symptoms we are fixing? I would have assumed a compile-time
> problem, but no built bot caught that?
Some of these are used only in sparse.c and sparse-vmmemap.c so with
CONFIG_SPARSE=n they are completely unused.
We probably should move them to mm/internal.h or even mm/sparse.h
> --
> Cheers
> David
--
Sincerely yours,
Mike.
© 2016 - 2025 Red Hat, Inc.