Lines Matching refs:page

33 static struct page *has_unmovable_pages(unsigned long start_pfn, unsigned long end_pfn,  in has_unmovable_pages()
36 struct page *page = pfn_to_page(start_pfn); in has_unmovable_pages() local
37 struct zone *zone = page_zone(page); in has_unmovable_pages()
43 if (is_migrate_cma_page(page)) { in has_unmovable_pages()
52 return page; in has_unmovable_pages()
56 page = pfn_to_page(pfn); in has_unmovable_pages()
64 if (PageReserved(page)) in has_unmovable_pages()
65 return page; in has_unmovable_pages()
81 if (PageHuge(page) || PageTransCompound(page)) { in has_unmovable_pages()
82 struct folio *folio = page_folio(page); in has_unmovable_pages()
85 if (PageHuge(page)) { in has_unmovable_pages()
87 return page; in has_unmovable_pages()
89 return page; in has_unmovable_pages()
92 skip_pages = folio_nr_pages(folio) - folio_page_idx(folio, page); in has_unmovable_pages()
103 if (!page_ref_count(page)) { in has_unmovable_pages()
104 if (PageBuddy(page)) in has_unmovable_pages()
105 pfn += (1 << buddy_order(page)) - 1; in has_unmovable_pages()
113 if ((flags & MEMORY_OFFLINE) && PageHWPoison(page)) in has_unmovable_pages()
126 if ((flags & MEMORY_OFFLINE) && PageOffline(page)) in has_unmovable_pages()
129 if (__PageMovable(page) || PageLRU(page)) in has_unmovable_pages()
137 return page; in has_unmovable_pages()
147 static int set_migratetype_isolate(struct page *page, int migratetype, int isol_flags, in set_migratetype_isolate() argument
150 struct zone *zone = page_zone(page); in set_migratetype_isolate()
151 struct page *unmovable; in set_migratetype_isolate()
162 if (is_migrate_isolate_page(page)) { in set_migratetype_isolate()
174 check_unmovable_start = max(page_to_pfn(page), start_pfn); in set_migratetype_isolate()
175 check_unmovable_end = min(pageblock_end_pfn(page_to_pfn(page)), in set_migratetype_isolate()
182 int mt = get_pageblock_migratetype(page); in set_migratetype_isolate()
184 set_pageblock_migratetype(page, MIGRATE_ISOLATE); in set_migratetype_isolate()
186 nr_pages = move_freepages_block(zone, page, MIGRATE_ISOLATE, in set_migratetype_isolate()
206 static void unset_migratetype_isolate(struct page *page, int migratetype) in unset_migratetype_isolate() argument
212 struct page *buddy; in unset_migratetype_isolate()
214 zone = page_zone(page); in unset_migratetype_isolate()
216 if (!is_migrate_isolate_page(page)) in unset_migratetype_isolate()
227 if (PageBuddy(page)) { in unset_migratetype_isolate()
228 order = buddy_order(page); in unset_migratetype_isolate()
230 buddy = find_buddy_page_pfn(page, page_to_pfn(page), in unset_migratetype_isolate()
233 isolated_page = !!__isolate_free_page(page, order); in unset_migratetype_isolate()
255 nr_pages = move_freepages_block(zone, page, migratetype, NULL); in unset_migratetype_isolate()
258 set_pageblock_migratetype(page, migratetype); in unset_migratetype_isolate()
260 __putback_isolated_page(page, order, migratetype); in unset_migratetype_isolate()
266 static inline struct page *
272 struct page *page; in __first_valid_page() local
274 page = pfn_to_online_page(pfn + i); in __first_valid_page()
275 if (!page) in __first_valid_page()
277 return page; in __first_valid_page()
365 struct page *page = __first_valid_page(pfn, boundary_pfn - pfn); in isolate_single_pageblock() local
367 VM_BUG_ON(!page); in isolate_single_pageblock()
368 pfn = page_to_pfn(page); in isolate_single_pageblock()
374 if (PageBuddy(page)) { in isolate_single_pageblock()
375 int order = buddy_order(page); in isolate_single_pageblock()
379 if (split_free_page(page, order, boundary_pfn - pfn)) in isolate_single_pageblock()
390 if (PageCompound(page)) { in isolate_single_pageblock()
391 struct page *head = compound_head(page); in isolate_single_pageblock()
404 if (PageHuge(page) || PageLRU(page) || __PageMovable(page)) { in isolate_single_pageblock()
407 int page_mt = get_pageblock_migratetype(page); in isolate_single_pageblock()
408 bool isolate_page = !is_migrate_isolate_page(page); in isolate_single_pageblock()
429 ret = set_migratetype_isolate(page, page_mt, in isolate_single_pageblock()
444 unset_migratetype_isolate(page, page_mt); in isolate_single_pageblock()
532 struct page *page; in start_isolate_page_range() local
560 page = __first_valid_page(pfn, pageblock_nr_pages); in start_isolate_page_range()
561 if (page && set_migratetype_isolate(page, migratetype, flags, in start_isolate_page_range()
586 struct page *page; in undo_isolate_page_range() local
593 page = __first_valid_page(pfn, pageblock_nr_pages); in undo_isolate_page_range()
594 if (!page || !is_migrate_isolate_page(page)) in undo_isolate_page_range()
596 unset_migratetype_isolate(page, migratetype); in undo_isolate_page_range()
610 struct page *page; in __test_page_isolated_in_pageblock() local
613 page = pfn_to_page(pfn); in __test_page_isolated_in_pageblock()
614 if (PageBuddy(page)) in __test_page_isolated_in_pageblock()
620 pfn += 1 << buddy_order(page); in __test_page_isolated_in_pageblock()
621 else if ((flags & MEMORY_OFFLINE) && PageHWPoison(page)) in __test_page_isolated_in_pageblock()
624 else if ((flags & MEMORY_OFFLINE) && PageOffline(page) && in __test_page_isolated_in_pageblock()
625 !page_count(page)) in __test_page_isolated_in_pageblock()
658 struct page *page; in test_pages_isolated() local
668 page = __first_valid_page(pfn, pageblock_nr_pages); in test_pages_isolated()
669 if (page && !is_migrate_isolate_page(page)) in test_pages_isolated()
672 page = __first_valid_page(start_pfn, end_pfn - start_pfn); in test_pages_isolated()
673 if ((pfn < end_pfn) || !page) { in test_pages_isolated()
679 zone = page_zone(page); in test_pages_isolated()