On Thu, Mar 14, 2024 at 11:26:17AM +0100, David Hildenbrand wrote: > Should we include this hunk: > > diff --git a/mm/debug.c b/mm/debug.c > index c1c1a6a484e4c..f521e17150a10 100644 > --- a/mm/debug.c > +++ b/mm/debug.c > @@ -63,7 +63,8 @@ static void __dump_folio(struct folio *folio, struct page *page, > * encode own info, and we must avoid calling page_folio() again. > */ > if (!folio_test_slab(folio)) { > - mapcount = atomic_read(&page->_mapcount) + 1; > + if (!folio_test_hugetlb(folio)) > + mapcount = atomic_read(&page->_mapcount) + 1; > if (folio_test_large(folio)) > mapcount += folio_entire_mapcount(folio); > } > > Apart from that, LGTM I actually want to do a bit more here ... +++ b/mm/debug.c @@ -58,15 +58,10 @@ static void __dump_folio(struct folio *folio, struct page *page, int mapcount = 0; char *type = ""; - /* - * page->_mapcount space in struct page is used by slab pages to - * encode own info, and we must avoid calling page_folio() again. - */ - if (!folio_test_slab(folio)) { + if (!page_has_type(page)) { mapcount = atomic_read(&page->_mapcount) + 1; - if (folio_test_large(folio)) - mapcount += folio_entire_mapcount(folio); - } + if (folio_test_large(folio)) + mapcount += folio_entire_mapcount(folio); pr_warn("page: refcount:%d mapcount:%d mapping:%p index:%#lx pfn:%#lx\n", folio_ref_count(folio), mapcount, mapping, @@ -99,7 +94,8 @@ static void __dump_folio(struct folio *folio, struct page *page, */ pr_warn("%sflags: %pGp%s\n", type, &folio->flags, is_migrate_cma_folio(folio, pfn) ? " CMA" : ""); - pr_warn("page_type: %pGt\n", &folio->page.page_type); + if (page_has_type(page)) + pr_warn("type: %pGt\n", &folio->page.page_type); print_hex_dump(KERN_WARNING, "raw: ", DUMP_PREFIX_NONE, 32, sizeof(unsigned long), page, and I think that deserves its own patch. Also, I need to do: +++ b/include/trace/events/mmflags.h @@ -135,6 +135,7 @@ IF_HAVE_PG_ARCH_X(arch_3) #define DEF_PAGETYPE_NAME(_name) { PG_##_name, __stringify(_name) } #define __def_pagetype_names \ + DEF_PAGETYPE_NAME(hugetlb) \ DEF_PAGETYPE_NAME(offline), \ DEF_PAGETYPE_NAME(guard), \ DEF_PAGETYPE_NAME(table), \ (and I think having this in the include/trace directory is a mistake; putting it in page-flags.h will lead to it not being forgotten)