Lines Matching +full:compound +full:- +full:device

170 	if (fd == -1)  in read_file()
173 numread = read(fd, buf, buflen - 1); in read_file()
191 if (fd == -1) { in write_file()
197 numwritten = write(fd, buf, buflen - 1); in write_file()
233 memmove(buf, c, sizeof(buf) - (c - buf)); in read_string()
321 struct khugepaged_settings *khugepaged = &settings->khugepaged; in write_settings()
323 write_string("enabled", thp_enabled_strings[settings->thp_enabled]); in write_settings()
324 write_string("defrag", thp_defrag_strings[settings->thp_defrag]); in write_settings()
326 shmem_enabled_strings[settings->shmem_enabled]); in write_settings()
327 write_num("use_zero_page", settings->use_zero_page); in write_settings()
329 write_num("khugepaged/defrag", khugepaged->defrag); in write_settings()
331 khugepaged->alloc_sleep_millisecs); in write_settings()
333 khugepaged->scan_sleep_millisecs); in write_settings()
334 write_num("khugepaged/max_ptes_none", khugepaged->max_ptes_none); in write_settings()
335 write_num("khugepaged/max_ptes_swap", khugepaged->max_ptes_swap); in write_settings()
336 write_num("khugepaged/max_ptes_shared", khugepaged->max_ptes_shared); in write_settings()
337 write_num("khugepaged/pages_to_scan", khugepaged->pages_to_scan); in write_settings()
341 settings->read_ahead_kb); in write_settings()
354 return settings_stack + settings_index - 1; in current_settings()
373 --settings_index; in pop_settings()
451 /* Find owning device's queue/read_ahead_kb control */ in get_finfo()
475 printf("%s: Unknown device type: %s\n", __func__, path); in get_finfo()
479 * Partition of block device - need to find actual device. in get_finfo()
481 * device devname. in get_finfo()
516 ret = snprintf(addr_pattern, MAX_LINE_LENGTH, "%08lx-", in check_swap()
559 MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); in alloc_mapping()
577 * MADV_COLLAPSE is a best-effort request and may fail if an internal
597 * Returns pmd-mapped hugepage in VMA marked VM_HUGEPAGE, filled with
602 void *p = ops->setup_area(1); in alloc_hpage()
604 ops->fault(p, 0, hpage_pmd_size); in alloc_hpage()
610 * khugepaged on low-load system (like a test machine), which in alloc_hpage()
618 if (!ops->check_huge(p, 1)) { in alloc_hpage()
715 if (madvise(((char *)p) + start, end - start, MADV_POPULATE_READ)) { in file_fault()
739 finfo.fd = memfd_create("khugepaged-selftest-collapse-shmem", 0); in shmem_setup_area()
813 else if (!ops->check_huge(p, expect ? nr_hpages : 0)) in __madvise_collapse()
825 if (!ops->check_huge(p, 0)) { in madvise_collapse()
840 if (!ops->check_huge(p, 0)) { in wait_for_scan()
851 while (timeout--) { in wait_for_scan()
852 if (ops->check_huge(p, nr_hpages)) in wait_for_scan()
862 return timeout == -1; in wait_for_scan()
882 ops->fault(p, 0, nr_hpages * hpage_pmd_size); in khugepaged_collapse()
884 if (ops->check_huge(p, expect ? nr_hpages : 0)) in khugepaged_collapse()
940 p = ops->setup_area(nr_hpages); in collapse_full()
941 ops->fault(p, 0, size); in collapse_full()
942 c->collapse("Collapse multiple fully populated PTE table", p, nr_hpages, in collapse_full()
945 ops->cleanup_area(p, size); in collapse_full()
952 p = ops->setup_area(1); in collapse_empty()
953 c->collapse("Do not collapse empty PTE table", p, 1, ops, false); in collapse_empty()
954 ops->cleanup_area(p, hpage_pmd_size); in collapse_empty()
961 p = ops->setup_area(1); in collapse_single_pte_entry()
962 ops->fault(p, 0, page_size); in collapse_single_pte_entry()
963 c->collapse("Collapse PTE table with single PTE entry present", p, in collapse_single_pte_entry()
965 ops->cleanup_area(p, hpage_pmd_size); in collapse_single_pte_entry()
977 p = ops->setup_area(1); in collapse_max_ptes_none()
986 ops->fault(p, 0, (hpage_pmd_nr - max_ptes_none - 1) * page_size); in collapse_max_ptes_none()
987 c->collapse("Maybe collapse with max_ptes_none exceeded", p, 1, in collapse_max_ptes_none()
988 ops, !c->enforce_pte_scan_limits); in collapse_max_ptes_none()
989 validate_memory(p, 0, (hpage_pmd_nr - max_ptes_none - 1) * page_size); in collapse_max_ptes_none()
991 if (c->enforce_pte_scan_limits) { in collapse_max_ptes_none()
992 ops->fault(p, 0, (hpage_pmd_nr - max_ptes_none) * page_size); in collapse_max_ptes_none()
993 c->collapse("Collapse with max_ptes_none PTEs empty", p, 1, ops, in collapse_max_ptes_none()
996 (hpage_pmd_nr - max_ptes_none) * page_size); in collapse_max_ptes_none()
999 ops->cleanup_area(p, hpage_pmd_size); in collapse_max_ptes_none()
1007 p = ops->setup_area(1); in collapse_swapin_single_pte()
1008 ops->fault(p, 0, hpage_pmd_size); in collapse_swapin_single_pte()
1022 c->collapse("Collapse with swapping in single PTE entry", p, 1, ops, in collapse_swapin_single_pte()
1026 ops->cleanup_area(p, hpage_pmd_size); in collapse_swapin_single_pte()
1034 p = ops->setup_area(1); in collapse_max_ptes_swap()
1035 ops->fault(p, 0, hpage_pmd_size); in collapse_max_ptes_swap()
1049 c->collapse("Maybe collapse with max_ptes_swap exceeded", p, 1, ops, in collapse_max_ptes_swap()
1050 !c->enforce_pte_scan_limits); in collapse_max_ptes_swap()
1053 if (c->enforce_pte_scan_limits) { in collapse_max_ptes_swap()
1054 ops->fault(p, 0, hpage_pmd_size); in collapse_max_ptes_swap()
1068 c->collapse("Collapse with max_ptes_swap pages swapped out", p, in collapse_max_ptes_swap()
1073 ops->cleanup_area(p, hpage_pmd_size); in collapse_max_ptes_swap()
1090 printf("Split huge page leaving single PTE mapping compound page..."); in collapse_single_pte_entry_compound()
1091 madvise(p + page_size, hpage_pmd_size - page_size, MADV_DONTNEED); in collapse_single_pte_entry_compound()
1092 if (ops->check_huge(p, 0)) in collapse_single_pte_entry_compound()
1097 c->collapse("Collapse PTE table with single PTE mapping compound page", in collapse_single_pte_entry_compound()
1101 ops->cleanup_area(p, hpage_pmd_size); in collapse_single_pte_entry_compound()
1109 printf("Split huge page leaving single PTE page table full of compound pages..."); in collapse_full_of_compound()
1112 if (ops->check_huge(p, 0)) in collapse_full_of_compound()
1117 c->collapse("Collapse PTE table full of compound pages", p, 1, ops, in collapse_full_of_compound()
1120 ops->cleanup_area(p, hpage_pmd_size); in collapse_full_of_compound()
1128 p = ops->setup_area(1); in collapse_compound_extreme()
1130 printf("\rConstruct PTE page table full of different PTE-mapped compound pages %3d/%d...", in collapse_compound_extreme()
1134 ops->fault(BASE_ADDR, 0, hpage_pmd_size); in collapse_compound_extreme()
1135 if (!ops->check_huge(BASE_ADDR, 1)) { in collapse_compound_extreme()
1141 p = mremap(BASE_ADDR - i * page_size, in collapse_compound_extreme()
1155 BASE_ADDR - (i + 1) * page_size); in collapse_compound_extreme()
1162 ops->cleanup_area(BASE_ADDR, hpage_pmd_size); in collapse_compound_extreme()
1163 ops->fault(p, 0, hpage_pmd_size); in collapse_compound_extreme()
1164 if (!ops->check_huge(p, 1)) in collapse_compound_extreme()
1169 c->collapse("Collapse PTE table full of different compound pages", p, 1, in collapse_compound_extreme()
1173 ops->cleanup_area(p, hpage_pmd_size); in collapse_compound_extreme()
1181 p = ops->setup_area(1); in collapse_fork()
1184 ops->fault(p, 0, page_size); in collapse_fork()
1185 if (ops->check_huge(p, 0)) in collapse_fork()
1196 if (ops->check_huge(p, 0)) in collapse_fork()
1201 ops->fault(p, page_size, 2 * page_size); in collapse_fork()
1202 c->collapse("Collapse PTE table with single page shared with parent process", in collapse_fork()
1206 ops->cleanup_area(p, hpage_pmd_size); in collapse_fork()
1214 if (ops->check_huge(p, 0)) in collapse_fork()
1219 ops->cleanup_area(p, hpage_pmd_size); in collapse_fork()
1234 if (ops->check_huge(p, 1)) in collapse_fork_compound()
1242 if (ops->check_huge(p, 0)) in collapse_fork_compound()
1246 ops->fault(p, 0, page_size); in collapse_fork_compound()
1248 write_num("khugepaged/max_ptes_shared", hpage_pmd_nr - 1); in collapse_fork_compound()
1249 c->collapse("Collapse PTE table full of compound pages in child", in collapse_fork_compound()
1252 current_settings()->khugepaged.max_ptes_shared); in collapse_fork_compound()
1255 ops->cleanup_area(p, hpage_pmd_size); in collapse_fork_compound()
1263 if (ops->check_huge(p, 1)) in collapse_fork_compound()
1268 ops->cleanup_area(p, hpage_pmd_size); in collapse_fork_compound()
1284 if (ops->check_huge(p, 1)) in collapse_max_ptes_shared()
1290 hpage_pmd_nr - max_ptes_shared - 1, hpage_pmd_nr); in collapse_max_ptes_shared()
1291 ops->fault(p, 0, (hpage_pmd_nr - max_ptes_shared - 1) * page_size); in collapse_max_ptes_shared()
1292 if (ops->check_huge(p, 0)) in collapse_max_ptes_shared()
1297 c->collapse("Maybe collapse with max_ptes_shared exceeded", p, in collapse_max_ptes_shared()
1298 1, ops, !c->enforce_pte_scan_limits); in collapse_max_ptes_shared()
1300 if (c->enforce_pte_scan_limits) { in collapse_max_ptes_shared()
1302 hpage_pmd_nr - max_ptes_shared, hpage_pmd_nr); in collapse_max_ptes_shared()
1303 ops->fault(p, 0, (hpage_pmd_nr - max_ptes_shared) * in collapse_max_ptes_shared()
1305 if (ops->check_huge(p, 0)) in collapse_max_ptes_shared()
1310 c->collapse("Collapse with max_ptes_shared PTEs shared", in collapse_max_ptes_shared()
1315 ops->cleanup_area(p, hpage_pmd_size); in collapse_max_ptes_shared()
1323 if (ops->check_huge(p, 1)) in collapse_max_ptes_shared()
1328 ops->cleanup_area(p, hpage_pmd_size); in collapse_max_ptes_shared()
1336 p = ops->setup_area(1); in madvise_collapse_existing_thps()
1337 ops->fault(p, 0, hpage_pmd_size); in madvise_collapse_existing_thps()
1338 c->collapse("Collapse fully populated PTE table...", p, 1, ops, true); in madvise_collapse_existing_thps()
1341 /* c->collapse() will find a hugepage and complain - call directly. */ in madvise_collapse_existing_thps()
1342 __madvise_collapse("Re-collapse PMD-mapped hugepage", p, 1, ops, true); in madvise_collapse_existing_thps()
1344 ops->cleanup_area(p, hpage_pmd_size); in madvise_collapse_existing_thps()
1358 p = ops->setup_area(nr_hpages); in madvise_retracted_page_tables()
1359 ops->fault(p, 0, size); in madvise_retracted_page_tables()
1368 c->collapse("Install huge PMD from page cache", p, nr_hpages, ops, in madvise_retracted_page_tables()
1371 ops->cleanup_area(p, size); in madvise_retracted_page_tables()
1452 * When testing file-backed memory, the collapse path in main()
1456 * we mem_ops->fault() them in. in main()
1476 default_settings.khugepaged.max_ptes_none = hpage_pmd_nr - 1; in main()
1488 printf("\nRun test: " #t " (%s:%s)\n", c->name, o->name); \ in main()