On Thu, Jun 11, 2026 at 09:58:55AM -0600, 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
You're not giving any details? how does this manifest? How did you detect?
Output? Etc.
>
> 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.
Seems to be a regression in your editor's line wrapping... ;)
>
> This issue occurs in two mm selftests:
> 1) hmm test
> 2) migration - private_anon_htlb test
OK that's useful, but what exactly happened? Any test output?
>
> I spoke to David about this and he suggested the following diff which seems
> to have solved both issues.
Whilst speaking to people off-list/elsewhere etc. is totally fine, I'd suggest
engaging with the community as the first course of action is often a good way of
resolving things.
Even if things arise from private discussions, which is also totally fine,
please do give sufficient context so that the community can engage with it.
And I would suggest that ideally you phrase things such that you are asking the
community as a whole :)
>
> David would you like to send a formal patch or patches?
So on that point, I understand you're asking David specifically because he
suggested the patch, but I feel that you'd get better results making it clear
that you want community input :)
As one might misread this, and perhaps other such occasions, as you feeling THP
== 1 person, which I am absolutely sure is not how you feel, but phrasing things
a little differently would help underline that :)
Kernel review and maintainership can be rather a thankless task, so details like
this matter I feel! [and I realise I probably screw up on this regularly too so
we're all constantly learning :)]
>
> Cheers,
> -- Nico
Thanks, Lorenzo
>
> 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));
> }
> --
> 2.54.0
>
> For (2) he suggested
>
> diff --git a/mm/migrate.c b/mm/migrate.c
> index d9b23909d716..9fd50ea25d2d 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))
> --
> 2.54.0
>