On Thu, Jun 11, 2026 at 10:09 AM David Hildenbrand (Arm)
<[email protected]> wrote:
>
> On 6/11/26 17:58, Nico Pache wrote:
> > Hi,
> >
> > While testing my mTHP code I noticed that mm selftests caused an accounting 
> > error in
> > /sys/kernel/mm/transparent_hugepage/hugepages-2048kB/stats/nr_anon
> >
> > At first I thought I might have caused a regression, but when retesting 
> > with 7.1-rc5 (without my code), the issue was still present.
> >
> > This issue occurs in two mm selftests:
> > 1) hmm test
> > 2) migration - private_anon_htlb test
> >
> > I spoke to David about this and he suggested the following diff which seems 
> > to have solved both issues.
> >
> > David would you like to send a formal patch or patches?
> >
> > Cheers,
> > -- Nico
> >
> > Diff for (1)
> >
> > diff --git a/mm/memremap.c b/mm/memremap.c
> > index 053842d45cb1..683a77dd679d 100644
> > --- a/mm/memremap.c
> > +++ b/mm/memremap.c
> > @@ -425,6 +425,7 @@ void free_zone_device_folio(struct folio *folio)
> >         mem_cgroup_uncharge(folio);
> >
> >         if (folio_test_anon(folio)) {
> > +               mod_mthp_stat(folio_order(folio), MTHP_STAT_NR_ANON, -1);
> >                 for (i = 0; i < nr; i++)
> >                         __ClearPageAnonExclusive(folio_page(folio, i));
> >         }
>
> Wasn't there another issue with hugetlb?
>
> diff --git a/mm/migrate.c b/mm/migrate.c
> index 8a64291ab5b4..0aec894266f2 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -590,7 +590,8 @@ static int __folio_migrate_mapping(struct address_space
> *mapping,
>                 /* No turning back from here */
>                 newfolio->index = folio->index;
>                 newfolio->mapping = folio->mapping;
> -               if (folio_test_anon(folio) && folio_test_large(folio))
> +               if (folio_test_anon(folio) && folio_test_large(folio) &&
> +                   !folio_test_hugetlb(folio))
>                         mod_mthp_stat(folio_order(folio), MTHP_STAT_NR_ANON, 
> 1);
>                 if (folio_test_swapbacked(folio))
>                         __folio_set_swapbacked(newfolio);
> @@ -623,7 +624,8 @@ static int __folio_migrate_mapping(struct address_space
> *mapping,
>          */
>         newfolio->index = folio->index;
>         newfolio->mapping = folio->mapping;
> -       if (folio_test_anon(folio) && folio_test_large(folio))
> +       if (folio_test_anon(folio) && folio_test_large(folio) &&
> +           !folio_test_hugetlb(folio))
>                 mod_mthp_stat(folio_order(folio), MTHP_STAT_NR_ANON, 1);
>         folio_ref_add(newfolio, nr); /* add cache reference */
>         if (folio_test_swapbacked(folio))
>
>
> Yeah, if you have some capacity, please send patches (and figure out Fixes:) 
> :)

Yeah ill spend some time next week trying to understand why these are
happening and produce patches :)

>
>
> --
> Cheers,
>
> David
>


Reply via email to