This is v2 of [1] with changed subject: "[PATCH v1 0/5] s390: page_mapcount(), page_has_private() and PG_arch_1" Rebased on s390x/features which contains the page_mapcount() and page_has_private() cleanups, and some PG_arch_1 cleanups from Willy. To compensate, I added some more cleanups ;) One "easy" fix upfront. Another issue I spotted is documented in [1]. Once this hits upstream, we can remove HAVE_ARCH_MAKE_PAGE_ACCESSIBLE from core-mm and s390x, so only the folio variant will remain. Compile tested, but not runtime tested with UV, I'll appreciate some testing help from people with UV access and experience. [1] https://lkml.kernel.org/r/20240404163642.1125529-1-david@xxxxxxxxxx v1 -> v2: * Rebased on s390x/features: * "s390/hugetlb: convert PG_arch_1 code to work on folio->flags" -> pmd_folio() not available on s390x/features * "s390/uv: don't call folio_wait_writeback() without a folio reference" -> Willy's folio conversion is in s390x/features * "s390/uv: convert PG_arch_1 users to only work on small folios" -> Add comments * Rearrange code and handle split_folio() return values properly. New patches to handle splitting: -> "s390/uv: gmap_make_secure() cleanups for further changes" -> "s390/uv: split large folios in gmap_make_secure()" * Added more cleanups: -> "s390/uv: make uv_convert_from_secure() a static function" -> "s390/uv: convert uv_destroy_owned_page() to uv_destroy_(folio|pte)()" -> "s390/uv: convert uv_convert_owned_from_secure() to uv_convert_from_secure_(folio|pte)()" -> "s390/mm: implement HAVE_ARCH_MAKE_FOLIO_ACCESSIBLE" Cc: Heiko Carstens <hca@xxxxxxxxxxxxx> Cc: Vasily Gorbik <gor@xxxxxxxxxxxxx> Cc: Alexander Gordeev <agordeev@xxxxxxxxxxxxx> Cc: Christian Borntraeger <borntraeger@xxxxxxxxxxxxx> Cc: Sven Schnelle <svens@xxxxxxxxxxxxx> Cc: Janosch Frank <frankja@xxxxxxxxxxxxx> Cc: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> Cc: Gerald Schaefer <gerald.schaefer@xxxxxxxxxxxxx> Cc: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Cc: Thomas Huth <thuth@xxxxxxxxxx> David Hildenbrand (10): s390/uv: don't call folio_wait_writeback() without a folio reference s390/uv: gmap_make_secure() cleanups for further changes s390/uv: split large folios in gmap_make_secure() s390/uv: convert PG_arch_1 users to only work on small folios s390/uv: update PG_arch_1 comment s390/uv: make uv_convert_from_secure() a static function s390/uv: convert uv_destroy_owned_page() to uv_destroy_(folio|pte)() s390/uv: convert uv_convert_owned_from_secure() to uv_convert_from_secure_(folio|pte)() s390/uv: implement HAVE_ARCH_MAKE_FOLIO_ACCESSIBLE s390/hugetlb: convert PG_arch_1 code to work on folio->flags arch/s390/include/asm/page.h | 5 + arch/s390/include/asm/pgtable.h | 8 +- arch/s390/include/asm/uv.h | 12 +- arch/s390/kernel/uv.c | 207 +++++++++++++++++++++----------- arch/s390/mm/fault.c | 14 ++- arch/s390/mm/gmap.c | 10 +- arch/s390/mm/hugetlbpage.c | 8 +- 7 files changed, 172 insertions(+), 92 deletions(-) -- 2.44.0