Userfaultfd selftests for hugetlb does not perform UFFD_EVENT_REMAP testing. However, mremap support was recently added in commit 550a7d60bd5e ("mm, hugepages: add mremap() support for hugepage backed vma"). While attempting to enable mremap support in the test, it was discovered that the mremap test indirectly depends on MADV_DONTNEED. madvise does not allow MADV_DONTNEED for hugetlb mappings. However, that is primarily due to the check in can_madv_lru_vma(). By simply removing the check and adding huge page alignment, MADV_DONTNEED can be made to work for hugetlb mappings. Do note that there is no compelling use case for adding this support. This was discussed in the RFC [1]. However, adding support makes sense as it is fairly trivial and brings hugetlb functionality more in line with 'normal' memory. After enabling support, add selftest for MADV_DONTNEED as well as MADV_REMOVE. Then update userfaultfd selftest. v1 -> v2 - Use is_vm_hugetlb_page() instead of open coding vma hugetlb check. - Add new test to .gitignore and use meaningful symbolic names (#define) for constants used in test. Shuah - Updated help text in userfaultfd test and modified run_vmtests to not pass in a file for userfaultfd hugetlb test. Axel - Added Reviewed-by for selftest patches. RFC -> v1 - Fixed alignment issues when calling zap_page_range. Naoya - Added checks for invalid arguments and misalignment to selftest. [1] https://lore.kernel.org/linux-mm/20220113180308.15610-1-mike.kravetz@xxxxxxxxxx/ Mike Kravetz (3): mm: enable MADV_DONTNEED for hugetlb mappings selftests/vm: add hugetlb madvise MADV_DONTNEED MADV_REMOVE test userfaultfd/selftests: enable huegtlb remap and remove event testing mm/madvise.c | 24 +- tools/testing/selftests/vm/.gitignore | 1 + tools/testing/selftests/vm/Makefile | 1 + tools/testing/selftests/vm/hugetlb-madvise.c | 413 +++++++++++++++++++ tools/testing/selftests/vm/run_vmtests.sh | 15 +- tools/testing/selftests/vm/userfaultfd.c | 69 ++-- 6 files changed, 485 insertions(+), 38 deletions(-) create mode 100644 tools/testing/selftests/vm/hugetlb-madvise.c -- 2.34.1