Lines Matching +full:non +full:- +full:overlapping
1 // SPDX-License-Identifier: GPL-2.0
24 #define OVERLAPPING 1 macro
40 int overlapping; member
51 _1KB = 1ULL << 10, /* 1KB -> not page aligned */
74 .overlapping = overlaps, \
88 unsigned long mid = low + (high - low) / 2; in get_sqrt()
95 high = mid - 1; in get_sqrt()
112 -1, 0); in is_remap_region_valid()
167 while (getline(&line, &len, maps_fp) != -1) { in is_range_mapped()
168 if (sscanf(line, "%lx-%lx", &first_val, &second_val) != 2) { in is_range_mapped()
216 -1, 0); in get_source_mapping()
226 * 2MB-aligned, however it will not be considered valid for a in get_source_mapping()
230 if (((unsigned long long) src_addr & (c.src_alignment - 1)) || in get_source_mapping()
260 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); in mremap_expand_merge()
300 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); in mremap_expand_merge_offset()
349 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); in mremap_move_within_range()
358 src = (void *)((unsigned long)src & ~(SIZE_MB(2) - 1)); in mremap_move_within_range()
363 dest = src - SIZE_MB(2); in mremap_move_within_range()
388 if (munmap(ptr, size) == -1) in mremap_move_within_range()
437 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_move_multiple_vmas()
445 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_move_multiple_vmas()
515 MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0) == MAP_FAILED) { in mremap_move_multiple_vmas()
559 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_shrink_multiple_vmas()
567 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_shrink_multiple_vmas()
595 * Shrink in-place across multiple VMAs and gaps so we end up with: in mremap_shrink_multiple_vmas()
642 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_move_multiple_vmas_split()
650 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_move_multiple_vmas_split()
692 * <-------------> in mremap_move_multiple_vmas_split()
705 if (mremap(&ptr[2 * page_size], size - 3 * page_size, size - 3 * page_size, in mremap_move_multiple_vmas_split()
766 if (uffd == -1) { in mremap_move_multi_invalid_vmas()
770 ksft_test_result_skip("%s - missing uffd", test_name); in mremap_move_multi_invalid_vmas()
783 MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_move_multi_invalid_vmas()
790 tgt_ptr = mmap(NULL, size, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0); in mremap_move_multi_invalid_vmas()
822 if (ioctl(uffd, UFFDIO_REGISTER, ®) == -1) { in mremap_move_multi_invalid_vmas()
855 "Invalid uffd-armed VMA at start of multi range moved\n"); in mremap_move_multi_invalid_vmas()
867 perror("mremap single invalid-multi VMA"); in mremap_move_multi_invalid_vmas()
873 * Unmap the VMA, and remap a non-uffd registered (therefore, multi VMA in mremap_move_multi_invalid_vmas()
882 MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0); in mremap_move_multi_invalid_vmas()
914 * all existing multi-move invalid VMAs, except the last, with valid in mremap_move_multi_invalid_vmas()
915 * multi-move VMAs. in mremap_move_multi_invalid_vmas()
922 if (munmap(ptr, size - 2 * page_size)) { in mremap_move_multi_invalid_vmas()
930 MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0); in mremap_move_multi_invalid_vmas()
989 ksft_test_result_skip("%s - missing uffd", test_name); in mremap_move_multi_invalid_vmas()
993 /* Returns the time taken for the remap on success else returns -1. */
1011 ret = -1; in remap_region()
1019 align_mask = ~(c.dest_alignment - 1); in remap_region()
1021 offset = (c.overlapping) ? -c.dest_alignment : c.dest_alignment; in remap_region()
1033 while (!is_remap_region_valid(addr, c.region_size) && !c.overlapping) { in remap_region()
1037 ret = -1; in remap_region()
1044 dest_preamble_addr = mmap((void *) addr - c.dest_preamble_size, c.dest_preamble_size, in remap_region()
1047 -1, 0); in remap_region()
1051 ret = -1; in remap_region()
1066 ret = -1; in remap_region()
1073 * chunks, if memcmp() returns non-zero, only then perform an in remap_region()
1091 ret = -1; in remap_region()
1107 ret = -1; in remap_region()
1133 ret = -1; in remap_region()
1145 ret = -1; in remap_region()
1153 ret = end_ns - start_ns; in remap_region()
1235 if (src && munmap(src, c.region_size) == -1) in mremap_move_1mb_from_start()
1238 if (dest && munmap(dest, c.region_size) == -1) in mremap_move_1mb_from_start()
1279 "Usage: %s [[-t <threshold_mb>] [-p <pattern_seed>]]\n" in usage()
1280 "-t\t only validate threshold_mb of the remapped region\n" in usage()
1284 "-p\t provide a seed to generate the random pattern for\n" in usage()
1294 while ((opt = getopt(argc, argv, optstr)) != -1) { in parse_args()
1304 return -1; in parse_args()
1310 return -1; in parse_args()
1325 /* hard-coded test configs */ in main()
1363 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); in main()
1378 OVERLAPPING, EXPECT_FAILURE, in main()
1379 "mremap - Source and Destination Regions Overlapping"); in main()
1383 "mremap - Destination Address Misaligned (1KB-aligned)"); in main()
1386 "mremap - Source Address Misaligned (1KB-aligned)"); in main()
1391 "8KB mremap - Source PTE-aligned, Destination PTE-aligned"); in main()
1395 "2MB mremap - Source 1MB-aligned, Destination PTE-aligned"); in main()
1397 "2MB mremap - Source 1MB-aligned, Destination 1MB-aligned"); in main()
1401 "4MB mremap - Source PMD-aligned, Destination PTE-aligned"); in main()
1403 "4MB mremap - Source PMD-aligned, Destination 1MB-aligned"); in main()
1405 "4MB mremap - Source PMD-aligned, Destination PMD-aligned"); in main()
1409 "2GB mremap - Source PUD-aligned, Destination PTE-aligned"); in main()
1411 "2GB mremap - Source PUD-aligned, Destination 1MB-aligned"); in main()
1413 "2GB mremap - Source PUD-aligned, Destination PMD-aligned"); in main()
1415 "2GB mremap - Source PUD-aligned, Destination PUD-aligned"); in main()
1419 "5MB mremap - Source 1MB-aligned, Destination 1MB-aligned"); in main()
1423 "5MB mremap - Source 1MB-aligned, Dest 1MB-aligned with 40MB Preamble"); in main()
1427 "1GB mremap - Source PTE-aligned, Destination PTE-aligned"); in main()
1429 * mremap 1GB region - Page table level aligned time in main()
1433 "1GB mremap - Source PMD-aligned, Destination PMD-aligned"); in main()
1435 "1GB mremap - Source PUD-aligned, Destination PUD-aligned"); in main()