Lines Matching refs:page

74 		struct page *page;  in migrate_vma_collect_pmd()  local
82 page = pmd_page(*pmdp); in migrate_vma_collect_pmd()
83 if (is_huge_zero_page(page)) { in migrate_vma_collect_pmd()
92 get_page(page); in migrate_vma_collect_pmd()
94 if (unlikely(!trylock_page(page))) in migrate_vma_collect_pmd()
97 ret = split_huge_page(page); in migrate_vma_collect_pmd()
98 unlock_page(page); in migrate_vma_collect_pmd()
99 put_page(page); in migrate_vma_collect_pmd()
117 struct page *page; in migrate_vma_collect_pmd() local
141 page = pfn_swap_entry_to_page(entry); in migrate_vma_collect_pmd()
144 page->pgmap->owner != migrate->pgmap_owner) in migrate_vma_collect_pmd()
147 mpfn = migrate_pfn(page_to_pfn(page)) | in migrate_vma_collect_pmd()
159 page = vm_normal_page(migrate->vma, addr, pte); in migrate_vma_collect_pmd()
160 if (page && !is_zone_device_page(page) && in migrate_vma_collect_pmd()
163 else if (page && is_device_coherent_page(page) && in migrate_vma_collect_pmd()
165 page->pgmap->owner != migrate->pgmap_owner)) in migrate_vma_collect_pmd()
172 if (!page || !page->mapping || PageTransCompound(page)) { in migrate_vma_collect_pmd()
186 get_page(page); in migrate_vma_collect_pmd()
200 if (trylock_page(page)) { in migrate_vma_collect_pmd()
205 anon_exclusive = PageAnon(page) && PageAnonExclusive(page); in migrate_vma_collect_pmd()
209 if (page_try_share_anon_rmap(page)) { in migrate_vma_collect_pmd()
211 unlock_page(page); in migrate_vma_collect_pmd()
212 put_page(page); in migrate_vma_collect_pmd()
224 folio_mark_dirty(page_folio(page)); in migrate_vma_collect_pmd()
229 page_to_pfn(page)); in migrate_vma_collect_pmd()
232 page_to_pfn(page)); in migrate_vma_collect_pmd()
235 page_to_pfn(page)); in migrate_vma_collect_pmd()
261 page_remove_rmap(page, vma, false); in migrate_vma_collect_pmd()
262 put_page(page); in migrate_vma_collect_pmd()
267 put_page(page); in migrate_vma_collect_pmd()
328 static bool migrate_vma_check_page(struct page *page, struct page *fault_page) in migrate_vma_check_page() argument
335 int extra = 1 + (page == fault_page); in migrate_vma_check_page()
342 if (PageCompound(page)) in migrate_vma_check_page()
346 if (is_zone_device_page(page)) in migrate_vma_check_page()
350 if (page_mapping(page)) in migrate_vma_check_page()
351 extra += 1 + page_has_private(page); in migrate_vma_check_page()
353 if ((page_count(page) - extra) > page_mapcount(page)) in migrate_vma_check_page()
365 struct page *fault_page) in migrate_device_unmap()
374 struct page *page = migrate_pfn_to_page(src_pfns[i]); in migrate_device_unmap() local
377 if (!page) { in migrate_device_unmap()
384 if (!is_zone_device_page(page)) { in migrate_device_unmap()
385 if (!PageLRU(page) && allow_drain) { in migrate_device_unmap()
391 if (isolate_lru_page(page)) { in migrate_device_unmap()
398 put_page(page); in migrate_device_unmap()
401 folio = page_folio(page); in migrate_device_unmap()
405 if (page_mapped(page) || in migrate_device_unmap()
406 !migrate_vma_check_page(page, fault_page)) { in migrate_device_unmap()
407 if (!is_zone_device_page(page)) { in migrate_device_unmap()
408 get_page(page); in migrate_device_unmap()
409 putback_lru_page(page); in migrate_device_unmap()
421 struct page *page = migrate_pfn_to_page(src_pfns[i]); in migrate_device_unmap() local
424 if (!page || (src_pfns[i] & MIGRATE_PFN_MIGRATE)) in migrate_device_unmap()
427 folio = page_folio(page); in migrate_device_unmap()
570 struct page *page, in migrate_vma_insert_page() argument
621 if (mem_cgroup_charge(page_folio(page), vma->vm_mm, GFP_KERNEL)) in migrate_vma_insert_page()
629 __SetPageUptodate(page); in migrate_vma_insert_page()
631 if (is_device_private_page(page)) { in migrate_vma_insert_page()
636 page_to_pfn(page)); in migrate_vma_insert_page()
639 page_to_pfn(page)); in migrate_vma_insert_page()
642 if (is_zone_device_page(page) && in migrate_vma_insert_page()
643 !is_device_coherent_page(page)) { in migrate_vma_insert_page()
647 entry = mk_pte(page, vma->vm_page_prot); in migrate_vma_insert_page()
674 page_add_new_anon_rmap(page, vma, addr); in migrate_vma_insert_page()
675 if (!is_zone_device_page(page)) in migrate_vma_insert_page()
676 lru_cache_add_inactive_or_unevictable(page, vma); in migrate_vma_insert_page()
677 get_page(page); in migrate_vma_insert_page()
709 struct page *newpage = migrate_pfn_to_page(dst_pfns[i]); in __migrate_device_pages()
710 struct page *page = migrate_pfn_to_page(src_pfns[i]); in __migrate_device_pages() local
719 if (!page) { in __migrate_device_pages()
746 mapping = page_mapping(page); in __migrate_device_pages()
766 if (migrate && migrate->fault_page == page) in __migrate_device_pages()
768 page_folio(page), in __migrate_device_pages()
772 page_folio(page), MIGRATE_SYNC_NO_COPY); in __migrate_device_pages()
833 struct page *newpage = migrate_pfn_to_page(dst_pfns[i]); in migrate_device_finalize()
834 struct page *page = migrate_pfn_to_page(src_pfns[i]); in migrate_device_finalize() local
836 if (!page) { in migrate_device_finalize()
849 newpage = page; in migrate_device_finalize()
852 src = page_folio(page); in migrate_device_finalize()
857 if (is_zone_device_page(page)) in migrate_device_finalize()
858 put_page(page); in migrate_device_finalize()
860 putback_lru_page(page); in migrate_device_finalize()
862 if (newpage != page) { in migrate_device_finalize()
915 struct page *page = pfn_to_page(pfn); in migrate_device_range() local
917 if (!get_page_unless_zero(page)) { in migrate_device_range()
922 if (!trylock_page(page)) { in migrate_device_range()
924 put_page(page); in migrate_device_range()
942 int migrate_device_coherent_page(struct page *page) in migrate_device_coherent_page() argument
945 struct page *dpage; in migrate_device_coherent_page()
947 WARN_ON_ONCE(PageCompound(page)); in migrate_device_coherent_page()
949 lock_page(page); in migrate_device_coherent_page()
950 src_pfn = migrate_pfn(page_to_pfn(page)) | MIGRATE_PFN_MIGRATE; in migrate_device_coherent_page()
969 copy_highpage(dpage, page); in migrate_device_coherent_page()