Lines Matching refs:hpage
860 static bool khugepaged_prealloc_page(struct page **hpage, bool *wait) in khugepaged_prealloc_page() argument
862 if (IS_ERR(*hpage)) { in khugepaged_prealloc_page()
867 *hpage = NULL; in khugepaged_prealloc_page()
869 } else if (*hpage) { in khugepaged_prealloc_page()
870 put_page(*hpage); in khugepaged_prealloc_page()
871 *hpage = NULL; in khugepaged_prealloc_page()
878 khugepaged_alloc_page(struct page **hpage, gfp_t gfp, int node) in khugepaged_alloc_page() argument
880 VM_BUG_ON_PAGE(*hpage, *hpage); in khugepaged_alloc_page()
882 *hpage = __alloc_pages_node(node, gfp, HPAGE_PMD_ORDER); in khugepaged_alloc_page()
883 if (unlikely(!*hpage)) { in khugepaged_alloc_page()
885 *hpage = ERR_PTR(-ENOMEM); in khugepaged_alloc_page()
889 prep_transhuge_page(*hpage); in khugepaged_alloc_page()
891 return *hpage; in khugepaged_alloc_page()
912 struct page *hpage; in khugepaged_alloc_hugepage() local
915 hpage = alloc_khugepaged_hugepage(); in khugepaged_alloc_hugepage()
916 if (!hpage) { in khugepaged_alloc_hugepage()
925 } while (unlikely(!hpage) && likely(khugepaged_enabled())); in khugepaged_alloc_hugepage()
927 return hpage; in khugepaged_alloc_hugepage()
930 static bool khugepaged_prealloc_page(struct page **hpage, bool *wait) in khugepaged_prealloc_page() argument
939 if (*hpage && page_count(*hpage) > 1) { in khugepaged_prealloc_page()
940 put_page(*hpage); in khugepaged_prealloc_page()
941 *hpage = NULL; in khugepaged_prealloc_page()
944 if (!*hpage) in khugepaged_prealloc_page()
945 *hpage = khugepaged_alloc_hugepage(wait); in khugepaged_prealloc_page()
947 if (unlikely(!*hpage)) in khugepaged_prealloc_page()
954 khugepaged_alloc_page(struct page **hpage, gfp_t gfp, int node) in khugepaged_alloc_page() argument
956 VM_BUG_ON(!*hpage); in khugepaged_alloc_page()
958 return *hpage; in khugepaged_alloc_page()
1061 struct page **hpage, in collapse_huge_page() argument
1087 new_page = khugepaged_alloc_page(hpage, gfp, node); in collapse_huge_page()
1216 *hpage = NULL; in collapse_huge_page()
1223 if (!IS_ERR_OR_NULL(*hpage)) in collapse_huge_page()
1224 mem_cgroup_uncharge(*hpage); in collapse_huge_page()
1234 struct page **hpage) in khugepaged_scan_pmd() argument
1383 collapse_huge_page(mm, address, hpage, node, in khugepaged_scan_pmd()
1446 struct page *hpage; in collapse_pte_mapped_thp() local
1475 hpage = find_lock_page(vma->vm_file->f_mapping, in collapse_pte_mapped_thp()
1477 if (!hpage) in collapse_pte_mapped_thp()
1480 if (!PageHead(hpage)) in collapse_pte_mapped_thp()
1523 if (hpage + i != page) in collapse_pte_mapped_thp()
1543 page_ref_sub(hpage, count); in collapse_pte_mapped_thp()
1544 add_mm_counter(vma->vm_mm, mm_counter_file(hpage), -count); in collapse_pte_mapped_thp()
1561 unlock_page(hpage); in collapse_pte_mapped_thp()
1562 put_page(hpage); in collapse_pte_mapped_thp()
1686 struct page **hpage, int node) in collapse_file() argument
1703 new_page = khugepaged_alloc_page(hpage, gfp, node); in collapse_file()
1982 *hpage = NULL; in collapse_file()
2029 if (!IS_ERR_OR_NULL(*hpage)) in collapse_file()
2030 mem_cgroup_uncharge(*hpage); in collapse_file()
2035 struct file *file, pgoff_t start, struct page **hpage) in khugepaged_scan_file() argument
2103 collapse_file(mm, file, start, hpage, node); in khugepaged_scan_file()
2111 struct file *file, pgoff_t start, struct page **hpage) in khugepaged_scan_file() argument
2123 struct page **hpage) in khugepaged_scan_mm_slot() argument
2199 khugepaged_scan_file(mm, file, pgoff, hpage); in khugepaged_scan_mm_slot()
2204 hpage); in khugepaged_scan_mm_slot()
2262 struct page *hpage = NULL; in khugepaged_do_scan() local
2272 if (!khugepaged_prealloc_page(&hpage, &wait)) in khugepaged_do_scan()
2286 &hpage); in khugepaged_do_scan()
2292 if (!IS_ERR_OR_NULL(hpage)) in khugepaged_do_scan()
2293 put_page(hpage); in khugepaged_do_scan()