kernel/liveupdate/kexec_handover.c | 1 + 1 file changed, 1 insertion(+)
From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
Memblock pages (including reserved memory) should have their allocation
tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being
released to the page allocator. When kho restores pages through
kho_restore_page(), missing this call causes mismatched
allocation/deallocation tracking and warning message:
alloc_tag was not set.
Add missing clear_page_tag_ref() annotation in kho_restore_page() to
fix this.
Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn>
---
kernel/liveupdate/kexec_handover.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
index cd6b3fb9dcae..2d47f2c50bd8 100644
--- a/kernel/liveupdate/kexec_handover.c
+++ b/kernel/liveupdate/kexec_handover.c
@@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio)
else
kho_init_pages(page, nr_pages);
+ clear_page_tag_ref(page);
adjust_managed_page_count(page, nr_pages);
return page;
}
--
2.25.1
On Fri, Jan 09, 2026 at 10:42:51AM +0000, ranxiaokai627@163.com wrote: > From: Ran Xiaokai <ran.xiaokai@zte.com.cn> > > Memblock pages (including reserved memory) should have their allocation > tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being > released to the page allocator. When kho restores pages through > kho_restore_page(), missing this call causes mismatched > allocation/deallocation tracking and warning message: > alloc_tag was not set. > > Add missing clear_page_tag_ref() annotation in kho_restore_page() to > fix this. > > Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org> > --- > kernel/liveupdate/kexec_handover.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c > index cd6b3fb9dcae..2d47f2c50bd8 100644 > --- a/kernel/liveupdate/kexec_handover.c > +++ b/kernel/liveupdate/kexec_handover.c > @@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio) > else > kho_init_pages(page, nr_pages); > > + clear_page_tag_ref(page); > adjust_managed_page_count(page, nr_pages); > return page; > } > -- > 2.25.1 > > -- Sincerely yours, Mike.
On Sun, Jan 11, 2026 at 1:09 AM Mike Rapoport <rppt@kernel.org> wrote: > > On Fri, Jan 09, 2026 at 10:42:51AM +0000, ranxiaokai627@163.com wrote: > > From: Ran Xiaokai <ran.xiaokai@zte.com.cn> > > > > Memblock pages (including reserved memory) should have their allocation > > tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being > > released to the page allocator. When kho restores pages through > > kho_restore_page(), missing this call causes mismatched > > allocation/deallocation tracking and warning message: > > alloc_tag was not set. > > > > Add missing clear_page_tag_ref() annotation in kho_restore_page() to > > fix this. > > > > Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> > > Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Reviewed-by: Suren Baghdasaryan <surenb@google.com> > > > --- > > kernel/liveupdate/kexec_handover.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c > > index cd6b3fb9dcae..2d47f2c50bd8 100644 > > --- a/kernel/liveupdate/kexec_handover.c > > +++ b/kernel/liveupdate/kexec_handover.c > > @@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio) > > else > > kho_init_pages(page, nr_pages); > > > > + clear_page_tag_ref(page); > > adjust_managed_page_count(page, nr_pages); > > return page; > > } > > -- > > 2.25.1 > > > > > > -- > Sincerely yours, > Mike.
On Fri, 9 Jan 2026 10:42:51 +0000 ranxiaokai627@163.com wrote:
> From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
>
> Memblock pages (including reserved memory) should have their allocation
> tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being
> released to the page allocator. When kho restores pages through
> kho_restore_page(), missing this call causes mismatched
> allocation/deallocation tracking and warning message:
> alloc_tag was not set.
>
> Add missing clear_page_tag_ref() annotation in kho_restore_page() to
> fix this.
Great, thanks.
It would be helpful to quote that warning message in the patch
changelog, please.
> --- a/kernel/liveupdate/kexec_handover.c
> +++ b/kernel/liveupdate/kexec_handover.c
> @@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio)
> else
> kho_init_pages(page, nr_pages);
>
> + clear_page_tag_ref(page);
> adjust_managed_page_count(page, nr_pages);
> return page;
> }
Warning splats are pretty bad and it's desirable to fix this in
previous kernel versions.
To do that it's best for us to identify which kernel version(s) should
be patched, via a Fixes: tag in the changelog.
From a quick look, it appears that Pratyush's 12b9a2c05d1b ("kho:
initialize tail pages for higher order folios properly") is a suitable
anchor, what do people think?
Meanwhile I'll queue this up for some testing while awaiting maintainer
feedback.
On Sat, Jan 10, 2026 at 04:28:43PM -0800, Andrew Morton wrote:
> On Fri, 9 Jan 2026 10:42:51 +0000 ranxiaokai627@163.com wrote:
>
> > From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> >
> > Memblock pages (including reserved memory) should have their allocation
> > tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being
> > released to the page allocator. When kho restores pages through
> > kho_restore_page(), missing this call causes mismatched
> > allocation/deallocation tracking and warning message:
> > alloc_tag was not set.
> >
> > Add missing clear_page_tag_ref() annotation in kho_restore_page() to
> > fix this.
>
> Great, thanks.
>
> It would be helpful to quote that warning message in the patch
> changelog, please.
>
> > --- a/kernel/liveupdate/kexec_handover.c
> > +++ b/kernel/liveupdate/kexec_handover.c
> > @@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio)
> > else
> > kho_init_pages(page, nr_pages);
> >
> > + clear_page_tag_ref(page);
> > adjust_managed_page_count(page, nr_pages);
> > return page;
> > }
>
> Warning splats are pretty bad and it's desirable to fix this in
> previous kernel versions.
>
> To do that it's best for us to identify which kernel version(s) should
> be patched, via a Fixes: tag in the changelog.
>
> From a quick look, it appears that Pratyush's 12b9a2c05d1b ("kho:
> initialize tail pages for higher order folios properly") is a suitable
> anchor, what do people think?
I think it should be even earlier:
fc33e4b44b27 ("kexec: enable KHO support for memory preservation")
> Meanwhile I'll queue this up for some testing while awaiting maintainer
> feedback.
--
Sincerely yours,
Mike.
On Sun, Jan 11, 2026 at 1:11 AM Mike Rapoport <rppt@kernel.org> wrote:
>
> On Sat, Jan 10, 2026 at 04:28:43PM -0800, Andrew Morton wrote:
> > On Fri, 9 Jan 2026 10:42:51 +0000 ranxiaokai627@163.com wrote:
> >
> > > From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> > >
> > > Memblock pages (including reserved memory) should have their allocation
> > > tags initialized to CODETAG_EMPTY via clear_page_tag_ref() before being
> > > released to the page allocator. When kho restores pages through
> > > kho_restore_page(), missing this call causes mismatched
> > > allocation/deallocation tracking and warning message:
> > > alloc_tag was not set.
> > >
> > > Add missing clear_page_tag_ref() annotation in kho_restore_page() to
> > > fix this.
> >
> > Great, thanks.
> >
> > It would be helpful to quote that warning message in the patch
> > changelog, please.
> >
> > > --- a/kernel/liveupdate/kexec_handover.c
> > > +++ b/kernel/liveupdate/kexec_handover.c
> > > @@ -268,6 +268,7 @@ static struct page *kho_restore_page(phys_addr_t phys, bool is_folio)
> > > else
> > > kho_init_pages(page, nr_pages);
> > >
> > > + clear_page_tag_ref(page);
> > > adjust_managed_page_count(page, nr_pages);
> > > return page;
> > > }
> >
> > Warning splats are pretty bad and it's desirable to fix this in
> > previous kernel versions.
> >
> > To do that it's best for us to identify which kernel version(s) should
> > be patched, via a Fixes: tag in the changelog.
> >
> > From a quick look, it appears that Pratyush's 12b9a2c05d1b ("kho:
> > initialize tail pages for higher order folios properly") is a suitable
> > anchor, what do people think?
>
> I think it should be even earlier:
> fc33e4b44b27 ("kexec: enable KHO support for memory preservation")
I agree.
>
> > Meanwhile I'll queue this up for some testing while awaiting maintainer
> > feedback.
>
> --
> Sincerely yours,
> Mike.
© 2016 - 2026 Red Hat, Inc.