Home
last modified time | relevance | path

Searched refs:uffd (Results 1 – 24 of 24) sorted by relevance

/linux/tools/testing/selftests/kvm/lib/
H A Duserfaultfd_util.c29 int uffd = reader_args->uffd; in uffd_handler_thread_fn() local
41 TEST_ASSERT(!epoll_ctl(epollfd, EPOLL_CTL_ADD, uffd, &evt), in uffd_handler_thread_fn()
42 "Failed to add uffd to epollfd"); in uffd_handler_thread_fn()
66 "Error reading pipefd in uffd reader thread"); in uffd_handler_thread_fn()
71 "Reader thread received EPOLLERR or EPOLLHUP on uffd."); in uffd_handler_thread_fn()
73 r = read(uffd, &msg, sizeof(msg)); in uffd_handler_thread_fn()
81 "Read on uffd returned unexpected number of bytes (%d)", r); in uffd_handler_thread_fn()
88 r = reader_args->handler(reader_args->uffd_mode, uffd, &msg); in uffd_handler_thread_fn()
109 int uffd; in uffd_setup_demand_paging() local
180 uffd_stop_demand_paging(struct uffd_desc * uffd) uffd_stop_demand_paging() argument
[all...]
/linux/tools/testing/selftests/bpf/prog_tests/
H A Dbpf_mod_race.c65 int uffd, ret; in test_setup_uffd()
68 if (!ASSERT_NEQ(fault_addr, MAP_FAILED, "mmap for uffd registration")) in test_setup_uffd()
88 uffd = uffd_block_page(fault_addr); in test_setup_uffd()
89 if (!ASSERT_GE(uffd, 0, "userfaultfd open + register address"))
109 if (!ASSERT_EQ(read(uffd, &uffd_msg, sizeof(uffd_msg)), sizeof(uffd_msg), in test_bpf_mod_race_config()
110 "read uffd block event")) in test_bpf_mod_race_config()
112 if (!ASSERT_EQ(uffd_msg.event, UFFD_EVENT_PAGEFAULT, "read uffd event is pagefault")) in test_bpf_mod_race_config()
123 /* Close uffd to unblock load_mod_thrd */ in test_bpf_mod_race_config()
124 close(uffd); in test_bpf_mod_race_config()
125 uffd in test_bpf_mod_race_config()
67 int uffd; test_setup_uffd() local
97 int uffd, ret; test_bpf_mod_race_config() local
[all...]
/linux/tools/testing/selftests/powerpc/tm/
H A Dtm-signal-pagefault.c86 long uffd; /* userfaultfd file descriptor */ in fault_handler_thread() local
91 uffd = (long) arg; in fault_handler_thread()
94 pollfd.fd = uffd; in fault_handler_thread()
101 nread = read(uffd, &msg, sizeof(msg)); in fault_handler_thread()
130 if (ioctl(uffd, UFFDIO_COPY, &uffdio_copy) == -1) { in fault_handler_thread()
139 long uffd; /* userfaultfd file descriptor */ in setup_uf_mem() local
148 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); in setup_uf_mem()
149 if (uffd == -1) { in setup_uf_mem()
155 if (ioctl(uffd, UFFDIO_API, &uffdio_api) == -1) { in setup_uf_mem()
180 if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register) == -1) { in setup_uf_mem()
[all …]
/linux/tools/testing/selftests/mm/
H A Duffd-common.c263 gopts->uffd = uffd_open(UFFD_FLAGS); in userfaultfd_open()
264 if (gopts->uffd < 0) in userfaultfd_open()
266 gopts->uffd_flags = fcntl(gopts->uffd, F_GETFD, NULL); in userfaultfd_open()
270 if (ioctl(gopts->uffd, UFFDIO_API, &uffdio_api)) in userfaultfd_open()
307 if (gopts->uffd != -1) { in uffd_test_ctx_clear()
308 if (close(gopts->uffd)) in uffd_test_ctx_clear()
310 gopts->uffd = -1; in uffd_test_ctx_clear()
447 int ret = read(gopts->uffd, msg, sizeof(*msg)); in uffd_read_msg()
472 wp_range(gopts->uffd, msg->arg.pagefault.address, gopts->page_size, false); in uffd_handle_page_fault()
495 continue_range(gopts->uffd, msg->arg.pagefault.address, gopts->page_size, in uffd_handle_page_fault()
[all …]
H A Duffd-unit-tests.c8 #include "uffd-common.h"
74 /* Arguments to be passed over to each uffd unit test */
119 int uffd; in uffd_test_skip()
125 uffd = uffd_open_dev(UFFD_FLAGS);
127 uffd = uffd_open_sys(UFFD_FLAGS);
128 if (uffd < 0) {
136 if (ioctl(uffd, UFFDIO_API, &uffdio_api) == 0) { in test_uffd_api()
144 if (ioctl(uffd, UFFDIO_API, &uffdio_api) == 0) { in test_uffd_api()
152 if (ioctl(uffd, UFFDIO_API, &uffdio_api)) { in test_uffd_api()
168 if (ioctl(uffd, UFFDIO_AP in test_uffd_api()
132 int uffd; test_uffd_api() local
922 uffd_register_detect_zeropage(int uffd,void * addr,uint64_t len) uffd_register_detect_zeropage() argument
962 uffd_register_poison(int uffd,void * addr,uint64_t len) uffd_register_poison() argument
[all...]
H A Dksm_functional_tests.c296 int uffd; in test_unmerge_uffd_wp() local
305 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); in test_unmerge_uffd_wp()
306 if (uffd < 0) { in test_unmerge_uffd_wp()
314 if (ioctl(uffd, UFFDIO_API, &uffdio_api) < 0) { in test_unmerge_uffd_wp()
332 close(uffd); in test_unmerge_uffd_wp()
333 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); in test_unmerge_uffd_wp()
334 if (uffd < 0) { in test_unmerge_uffd_wp()
342 if (ioctl(uffd, UFFDIO_API, &uffdio_api) < 0) { in test_unmerge_uffd_wp()
348 if (uffd_register(uffd, map, size, false, true, false)) { in test_unmerge_uffd_wp()
357 if (ioctl(uffd, UFFDIO_WRITEPROTEC in test_unmerge_uffd_wp()
[all...]
H A Dhugepage-mremap.c
H A Dmkdirty.c275 int uffd; in test_uffdio_copy() local
288 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); in test_uffdio_copy()
289 if (uffd < 0) { in test_uffdio_copy()
296 if (ioctl(uffd, UFFDIO_API, &uffdio_api) < 0) { in test_uffdio_copy()
304 if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register)) { in test_uffdio_copy()
314 if (ioctl(uffd, UFFDIO_COPY, &uffdio_copy)) { in test_uffdio_copy()
321 close(uffd); in test_uffdio_copy()
H A DMakefile92 TEST_GEN_FILES += uffd-stress
93 TEST_GEN_FILES += uffd-unit-tests
94 TEST_GEN_FILES += uffd-wp-mremap
193 $(OUTPUT)/uffd-stress: uffd-common.c
194 $(OUTPUT)/uffd-unit-tests: uffd-common.c
195 $(OUTPUT)/uffd-wp-mremap: uffd-common.c
H A Duffd-stress.c37 #include "uffd-common.h"
64 "./uffd-stress anon 100 99999\n\n"
66 "./uffd-stress shmem 1000 99\n\n"
68 "./uffd-stress hugetlb 256 50\n\n"
70 "./uffd-stress hugetlb-private 256 50\n\n"
73 "while ./uffd-stress anon $[RANDOM % 6000 + 10] 999; do true; done\n\n";
77 fprintf(stderr, "\nUsage: ./uffd-stress <test type> <MiB> <bounces>\n\n"); in usage()
175 * If we need to test uffd-wp, set it up now. Then we'll have in background_thread()
180 wp_range(gopts->uffd, (unsigned long)gopts->area_dst + start_nr * gopts->page_size, in background_thread()
298 fcntl(gopts->uffd, F_SETF in userfaultfd_stress()
[all...]
H A Duffd-wp-mremap.c12 #include "uffd-common.h"
30 ksft_exit_skip("uffd-wp feature not supported\n"); in detect_thp_sizes()
148 ksft_test_result_fail("uffd-wp not %s for pte %lu!\n", in range_is_swapped()
190 /* Register range for uffd-wp. */ in test_one_folio()
198 if (uffd_register(gopts->uffd, mem, size, false, true, false)) { in test_one_folio()
205 if (ioctl(gopts->uffd, UFFDIO_WRITEPROTECT, &wp_prms)) { in test_one_folio()
218 /* Check that uffd-wp is set for all PTEs in range. */ in test_one_folio()
224 * UFFD_FEATURE_EVENT_REMAP is not set, we expect the uffd-wp bit for in test_one_folio()
239 /* Check that uffd-wp is cleared for all PTEs in range. */ in test_one_folio()
252 if (gopts->uffd >
[all...]
H A Dvm_util.h101 int uffd_register(int uffd, void *addr, uint64_t len,
103 int uffd_unregister(int uffd, void *addr, uint64_t len);
104 int uffd_register_with_ioctls(int uffd, void *addr, uint64_t len,
H A Dvm_util.c494 int uffd_register_with_ioctls(int uffd, void *addr, uint64_t len, in uffd_register_with_ioctls() argument
512 if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register) == -1) in uffd_register_with_ioctls()
520 int uffd_register(int uffd, void *addr, uint64_t len, in uffd_register() argument
523 return uffd_register_with_ioctls(uffd, addr, len, in uffd_register()
527 int uffd_unregister(int uffd, void *addr, uint64_t len) in uffd_unregister() argument
532 if (ioctl(uffd, UFFDIO_UNREGISTER, &range) == -1) in uffd_unregister()
H A Drun_vmtests.sh292 CATEGORY="userfaultfd" run_test ./uffd-unit-tests
293 uffd_stress_bin=./uffd-stress
299 CATEGORY="userfaultfd" run_test ./uffd-wp-mremap
H A Dmremap_test.c737 int uffd, err, i; in mremap_move_multiple_vmas_split()
744 uffd = syscall(__NR_userfaultfd, O_NONBLOCK); in mremap_move_multiple_vmas_split()
745 if (uffd == -1) { in mremap_move_multiple_vmas_split()
749 ksft_test_result_skip("%s - missing uffd", test_name);
755 if (ioctl(uffd, UFFDIO_API, &api)) { in mremap_move_multi_invalid_vmas()
801 if (ioctl(uffd, UFFDIO_REGISTER, &reg) == -1) { in mremap_move_multi_invalid_vmas()
822 fprintf(stderr, "mremap() succeeded for multi VMA uffd armed\n"); in mremap_move_multi_invalid_vmas()
834 "Invalid uffd-armed VMA at start of multi range moved\n"); in mremap_move_multi_invalid_vmas()
852 * Unmap the VMA, and remap a non-uffd registered (therefore, multi VMA in mremap_move_multi_invalid_vmas()
875 fprintf(stderr, "mremap() succeeded for multi VMA uffd arme in mremap_move_multi_invalid_vmas()
758 int uffd, err, i; mremap_move_multi_invalid_vmas() local
[all...]
H A Dguard-regions.c1481 TEST_F(guard_regions, uffd) in TEST_F() argument
1484 int uffd; in TEST_F() local
1498 uffd = userfaultfd(0); in TEST_F()
1499 if (uffd == -1) { in TEST_F()
1514 ASSERT_NE(uffd, -1); in TEST_F()
1516 ASSERT_EQ(ioctl(uffd, UFFDIO_API, &api), 0); in TEST_F()
1528 ASSERT_EQ(ioctl(uffd, UFFDIO_REGISTER, &reg), 0); in TEST_F()
1541 ASSERT_EQ(ioctl(uffd, UFFDIO_UNREGISTER, &range), 0); in TEST_F()
1542 close(uffd); in TEST_F()
H A Duffd-common.h62 int uffd, uffd_flags, finished, *pipefd, test_type; member
H A Dpagemap_ioctl.c40 int uffd; variable
100 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY); in init_uffd()
101 if (uffd == -1) in init_uffd()
102 return uffd; in init_uffd()
107 if (ioctl(uffd, UFFDIO_API, &uffdio_api)) in init_uffd()
127 if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register)) in wp_init()
137 if (ioctl(uffd, UFFDIO_WRITEPROTECT, &wp)) in wp_init()
150 if (ioctl(uffd, UFFDIO_UNREGISTER, &uffdio_register.range)) in wp_free()
/linux/tools/testing/selftests/kvm/include/
H A Duserfaultfd_util.h15 typedef int (*uffd_handler_t)(int uffd_mode, int uffd, struct uffd_msg *msg);
19 int uffd; member
27 int uffd; member
40 void uffd_stop_demand_paging(struct uffd_desc *uffd);
/linux/tools/testing/selftests/x86/
H A Dtest_shadow_stack.c458 int uffd = *(int *)arg; in uffd_thread() local
463 ret = read(uffd, &msg, sizeof(msg)); in uffd_thread()
476 if (ioctl(uffd, UFFDIO_COPY, &req)) in uffd_thread()
489 int uffd; in test_userfaultfd() local
496 uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK); in test_userfaultfd()
497 if (uffd < 0) { in test_userfaultfd()
506 if (ioctl(uffd, UFFDIO_API, &uffdio_api)) in test_userfaultfd()
512 if (ioctl(uffd, UFFDIO_REGISTER, &uffdio_register)) in test_userfaultfd()
515 if (pthread_create(&thread, NULL, &uffd_thread, &uffd)) in test_userfaultfd()
536 close(uffd); in test_userfaultfd()
/linux/tools/testing/selftests/kvm/
H A Ddemand_paging_test.c57 static int handle_uffd_page_request(int uffd_mode, int uffd, in handle_uffd_page_request() argument
76 r = ioctl(uffd, UFFDIO_COPY, &copy); in handle_uffd_page_request()
100 r = ioctl(uffd, UFFDIO_CONTINUE, &cont); in handle_uffd_page_request()
119 TEST_FAIL("Invalid uffd mode %d", uffd_mode); in handle_uffd_page_request()
209 pr_info("Finished creating vCPUs and starting uffd threads\n"); in run_test()
258 printf(" -r: Set the number of reader threads per uffd.\n"); in help()
324 "Invalid number of readers per uffd %d: must be >=1", in main()
/linux/tools/testing/selftests/kvm/arm64/
H A Dpage_fault_test.c309 static int uffd_generic_handler(int uffd_mode, int uffd, struct uffd_msg *msg, in uffd_generic_handler() argument
329 ret = ioctl(uffd, UFFDIO_COPY, &copy); in uffd_generic_handler()
342 static int uffd_pt_handler(int mode, int uffd, struct uffd_msg *msg) in uffd_pt_handler() argument
344 return uffd_generic_handler(mode, uffd, msg, &pt_args); in uffd_pt_handler()
347 static int uffd_data_handler(int mode, int uffd, struct uffd_msg *msg) in uffd_data_handler() argument
349 return uffd_generic_handler(mode, uffd, msg, &data_args); in uffd_data_handler()
399 static int uffd_no_handler(int mode, int uffd, struct uffd_msg *msg) in uffd_no_handler() argument
789 .name = SCAT4(uffd, _access, _with_af, #_mark_cmd), \
/linux/mm/
H A Dhugetlb.c4970 bool uffd = pte_swp_uffd(entry); in copy_hugetlb_page_range() local
4980 if (userfaultfd_protected(src_vma) && uffd) in copy_hugetlb_page_range()
/linux/
H A DMAINTAINERS17468 F: tools/testing/selftests/mm/uffd-*.[ch]