selftests-mm-implement-the-mthp-sized-hugepage-check-helpers.patch removed from -mm tree
The quilt patch titled
Subject: selftests: mm: implement the mTHP-sized hugepage check helpers
has been removed from the -mm tree. Its filename was
selftests-mm-implement-the-mthp-sized-hugepage-check-helpers.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Baolin Wang <[email protected]>
Subject: selftests: mm: implement the mTHP-sized hugepage check helpers
Date: Thu, 6 Aug 2026 11:34:14 +0800
Implement mTHP-sized hugepage checking helpers using gather_folio_orders(). Also rename the existing PMD-sized huge page check function to __check_pmd_huge() for clarity.
---
tools/testing/selftests/mm/vm_util.c | 76 +++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 4 deletions(-)
tools/testing/selftests/mm/vm_util.c renamed from tools/testing/selftests/mm/vm_util.c~selftests-mm-implement-the-mthp-sized-hugepage-check-helpers +72 -4
@@ -15,6 +15,9 @@#define SMAP_FILE_PATH "/proc/self/smaps"#define STATUS_FILE_PATH "/proc/self/status"#define MAX_LINE_LENGTH 500 +#define PAGEMAP_PATH "/proc/self/pagemap" +#define KPAGEFLAGS_PATH "/proc/kpageflags" +#define MAX_NR_ORDERS 20unsigned int __page_size;unsigned int __page_shift;
@@ -348,7 +351,7 @@ err_out:return entry; } -bool __check_huge (void *addr,char *pattern,int nr_hpages, +static bool __check_pmd_huge (void *addr,char *pattern,int nr_hpages,uint64_t hpage_size) {char buffer[MAX_LINE_LENGTH ];
@@ -366,19 +369,84 @@ err_out:return thp == (nr_hpages * (hpage_size >>10 )); } +static bool check_large_folios (void *addr,size_t len,int nr_hpages, +uint64_t hpage_size) +{ +int order =0 , pagesize =getpagesize (); +unsigned int nr_pages = hpage_size / pagesize; +int orders[MAX_NR_ORDERS ], status; +int pagemap_fd, kpageflags_fd; +bool ret = false; + +if (!nr_pages) +ksft_exit_fail_msg ("invalid hugepage size\n" ); + + order =31 -__builtin_clz (nr_pages); +if (!order || order >=MAX_NR_ORDERS ) +ksft_exit_fail_msg ("invalid order\n" ); + +memset (orders,0 ,sizeof (int ) *MAX_NR_ORDERS ); + pagemap_fd =open (PAGEMAP_PATH ,O_RDONLY ); +if (pagemap_fd ==-1 ) +ksft_exit_fail_msg ("read pagemap fail\n" ); + + kpageflags_fd =open (KPAGEFLAGS_PATH ,O_RDONLY ); +if (kpageflags_fd ==-1 ) { +close (pagemap_fd); +ksft_exit_fail_msg ("read kpageflags fail\n" ); + } + + status =gather_folio_orders (addr, len, pagemap_fd, + kpageflags_fd, orders,MAX_NR_ORDERS ); +if (status) + goto out; + +if (orders[order] == nr_hpages) + ret = true; + +out: +close (pagemap_fd); +close (kpageflags_fd); +return ret; +} +bool check_huge_anon (void *addr,size_t len,int nr_hpages,uint64_t hpage_size) { -return __check_huge (addr,"AnonHugePages: " , nr_hpages, hpage_size); +uint64_t pmd_pagesize =read_pmd_pagesize (); + +if (!pmd_pagesize) +ksft_exit_fail_msg ("reading PMD pagesize failed\n" ); + +if (hpage_size == pmd_pagesize) +return __check_pmd_huge (addr,"AnonHugePages: " , nr_hpages, hpage_size); + +return check_large_folios (addr, len, nr_hpages, hpage_size); }bool check_huge_file (void *addr,size_t len,int nr_hpages,uint64_t hpage_size) { -return __check_huge (addr,"FilePmdMapped:" , nr_hpages, hpage_size); +uint64_t pmd_pagesize =read_pmd_pagesize (); + +if (!pmd_pagesize) +ksft_exit_fail_msg ("reading PMD pagesize failed\n" ); + +if (hpage_size == pmd_pagesize) +return __check_pmd_huge (addr,"FilePmdMapped:" , nr_hpages, hpage_size); + +return check_large_folios (addr, len, nr_hpages, hpage_size); }bool check_huge_shmem (void *addr,size_t len,int nr_hpages,uint64_t hpage_size) { -return __check_huge (addr,"ShmemPmdMapped:" , nr_hpages, hpage_size); +uint64_t pmd_pagesize =read_pmd_pagesize (); + +if (!pmd_pagesize) +ksft_exit_fail_msg ("reading PMD pagesize failed\n" ); + +if (hpage_size == pmd_pagesize) +return __check_pmd_huge (addr,"ShmemPmdMapped:" , nr_hpages, hpage_size); + +return check_large_folios (addr, len, nr_hpages, hpage_size); }int64_t allocate_transhuge (void *ptr,int pagemap_fd)
_
Patches currently in -mm which might be from [email protected] are
mm-fix-incorrect-vm_flags-usage-when-checking-allowable-orders-for-tmpfs.patch