Linux-mm Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Bug Report] Elevated PMD nr_anon after running selftests
@ 2026-06-11 15:58 Nico Pache
  2026-06-11 16:09 ` David Hildenbrand (Arm)
  2026-06-11 16:39 ` Lorenzo Stoakes
  0 siblings, 2 replies; 6+ messages in thread
From: Nico Pache @ 2026-06-11 15:58 UTC (permalink / raw)
  To: Linux MM, linux-kselftest, LKML, linux-cxl
  Cc: David Hildenbrand (Red Hat), Lorenzo Stoakes (Oracle),
	Oscar Salvador, Andrew Morton, Zi Yan, Matthew Brost, Joshua Hahn,
	Rakie Kim, Byungchul Park, Gregory Price, Ying Huang,
	Alistair Popple

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));
        }
-- 
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



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-06-11 17:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-11 15:58 [Bug Report] Elevated PMD nr_anon after running selftests Nico Pache
2026-06-11 16:09 ` David Hildenbrand (Arm)
2026-06-11 16:23   ` David Hildenbrand (Arm)
2026-06-11 16:38     ` Nico Pache
2026-06-11 16:39 ` Lorenzo Stoakes
2026-06-11 17:24   ` Nico Pache

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox