This patch series is against my current folio for-next branch. I know it won't apply to sfr's next tree, and it's not for-next material yet. I intend to submit it for 5.18 after I've rebased it to one of the 5.17-rc releases. The overall effect of this (ignoring the primary "preparing for folios that are not PAGE or PMD sized" purpose) is to reduce the size of gup.o by ~700 bytes in the config I normally test with. This patchset just converts existing implementations to use folios. There's no new API for consumers here to provide information in a more efficient (address, length) format. That will be a separate patchset. Matthew Wilcox (Oracle) (17): mm: Add folio_put_refs() mm: Add folio_pincount_available() mm: Add folio_pincount_ptr() mm: Convert page_maybe_dma_pinned() to use a folio gup: Add try_get_folio() mm: Remove page_cache_add_speculative() and page_cache_get_speculative() gup: Add gup_put_folio() gup: Add try_grab_folio() gup: Convert gup_pte_range() to use a folio gup: Convert gup_hugepte() to use a folio gup: Convert gup_huge_pmd() to use a folio gup: Convert gup_huge_pud() to use a folio gup: Convert gup_huge_pgd() to use a folio gup: Convert for_each_compound_head() to gup_for_each_folio() gup: Convert for_each_compound_range() to gup_for_each_folio_range() mm: Add isolate_lru_folio() gup: Convert check_and_migrate_movable_pages() to use a folio arch/powerpc/include/asm/mmu_context.h | 1 - include/linux/mm.h | 58 +++-- include/linux/mm_types.h | 6 + include/linux/pagemap.h | 11 - mm/folio-compat.c | 8 + mm/gup.c | 312 ++++++++++++------------- mm/hugetlb.c | 7 +- mm/internal.h | 3 +- mm/vmscan.c | 43 ++-- 9 files changed, 222 insertions(+), 227 deletions(-) -- 2.33.0