On Tue, Jun 25, 2024 at 04:05:58PM -0700, Andrew Morton wrote: > On Mon, 24 Jun 2024 10:42:00 -0400 Peter Xu <peterx@xxxxxxxxxx> wrote: > > > > uffdio_api.features &= ~UFFD_FEATURE_WP_HUGETLBFS_SHMEM; > > > uffdio_api.features &= ~UFFD_FEATURE_WP_UNPOPULATED; > > > uffdio_api.features &= ~UFFD_FEATURE_WP_ASYNC; > > > #endif > > > > > > If you run the userfaultfd selftests with the run_vmtests script we get > > > several failures stemming from trying to call uffdio_regsiter with the flag > > > UFFDIO_REGISTER_MODE_WP. However, the kernel ensures in vma_can_userfault() > > > that if CONFIG_PTE_MARKER_UFFD_WP is disabled, only allow the VM_UFFD_WP - > > > which is set when you pass the UFFDIO_REGISTER_MODE_WP flag - on > > > anonymous vmas. > > > > > > In parse_test_type_arg() I added the features check against > > > UFFD_FEATURE_WP_UNPOPULATED as it seemed the most well know feature/flag. I'm > > > more than happy to take any suggestions and adapt them if you have any! > > > > There're documents for these features in the headers: > > > > * UFFD_FEATURE_WP_HUGETLBFS_SHMEM indicates that userfaultfd > > * write-protection mode is supported on both shmem and hugetlbfs. > > * > > * UFFD_FEATURE_WP_UNPOPULATED indicates that userfaultfd > > * write-protection mode will always apply to unpopulated pages > > * (i.e. empty ptes). This will be the default behavior for shmem > > * & hugetlbfs, so this flag only affects anonymous memory behavior > > * when userfault write-protection mode is registered. > > > > While in this context ("test_type != TEST_ANON") IIUC the accurate feature > > to check is UFFD_FEATURE_WP_HUGETLBFS_SHMEM. > > > > In most kernels they should behave the same indeed, but note that since > > UNPOPULATED was introduced later than shmem/hugetlb support, it means on > > some kernel the result of checking these two features will be different. > > I'm unsure what to do with this series. Peter, your review comments > are unclear - do you request updates? Yes, or some clarification from Audra would also work. What I was trying to say is here I think the code should check against UFFD_FEATURE_WP_HUGETLBFS_SHMEM instead. Thanks, -- Peter Xu