I had intended to send just a self-explanatory 1/2 and 2/2 against 6.1-rc3 on Monday; but checked for clashes with linux-next (mainly mm-unstable) just before sending, and fuzz in mm_types.h revealed not just a clash with Sidhartha's series, but also that I had missed the hugetlb usage of tail page->private, problematic for me on 32-bit. So that series was slightly broken; and although it would probably have been easy to fix with a "SUBPAGE_INDEX_SUBPOOL = 2" patch, that would not have moved us forward very well. So this series is against next-20221102 (and hopefully later nexts), with a preparatory 1/3 to rejig the hugetlb tail private usage, on top of Sidhartha's. 1/3 mm,hugetlb: use folio fields in second tail page 2/3 mm,thp,rmap: simplify compound page mapcount handling 3/3 mm,thp,rmap: lock_compound_mapcounts() on THP mapcounts 2/3 and 3/3 can almost be applied cleanly to 6.1-rc3 (okay when you are on 64-bit): just a couple of easily resolved rejects. Documentation/mm/transhuge.rst | 34 +--- include/linux/hugetlb.h | 23 +-- include/linux/hugetlb_cgroup.h | 31 +-- include/linux/mm.h | 85 ++++++--- include/linux/mm_types.h | 91 ++++++--- include/linux/page-flags.h | 21 -- include/linux/rmap.h | 12 +- mm/Kconfig | 2 +- mm/debug.c | 5 +- mm/folio-compat.c | 6 - mm/huge_memory.c | 37 +--- mm/hugetlb.c | 2 + mm/khugepaged.c | 11 +- mm/memory-failure.c | 5 +- mm/page_alloc.c | 27 +-- mm/rmap.c | 359 ++++++++++++++++++++--------------- mm/util.c | 79 -------- 17 files changed, 401 insertions(+), 429 deletions(-) Hugh