Lines Matching refs:page
12 int set_migratetype_isolate(struct page *page, bool skip_hwpoisoned_pages) in set_migratetype_isolate() argument
20 zone = page_zone(page); in set_migratetype_isolate()
24 pfn = page_to_pfn(page); in set_migratetype_isolate()
48 if (!has_unmovable_pages(zone, page, arg.pages_found, in set_migratetype_isolate()
60 int migratetype = get_pageblock_migratetype(page); in set_migratetype_isolate()
62 set_pageblock_migratetype(page, MIGRATE_ISOLATE); in set_migratetype_isolate()
64 nr_pages = move_freepages_block(zone, page, MIGRATE_ISOLATE); in set_migratetype_isolate()
75 void unset_migratetype_isolate(struct page *page, unsigned migratetype) in unset_migratetype_isolate() argument
79 struct page *isolated_page = NULL; in unset_migratetype_isolate()
82 struct page *buddy; in unset_migratetype_isolate()
84 zone = page_zone(page); in unset_migratetype_isolate()
86 if (get_pageblock_migratetype(page) != MIGRATE_ISOLATE) in unset_migratetype_isolate()
97 if (PageBuddy(page)) { in unset_migratetype_isolate()
98 order = page_order(page); in unset_migratetype_isolate()
100 page_idx = page_to_pfn(page) & ((1 << MAX_ORDER) - 1); in unset_migratetype_isolate()
102 buddy = page + (buddy_idx - page_idx); in unset_migratetype_isolate()
106 __isolate_free_page(page, order); in unset_migratetype_isolate()
107 kernel_map_pages(page, (1 << order), 1); in unset_migratetype_isolate()
108 set_page_refcounted(page); in unset_migratetype_isolate()
109 isolated_page = page; in unset_migratetype_isolate()
120 nr_pages = move_freepages_block(zone, page, migratetype); in unset_migratetype_isolate()
123 set_pageblock_migratetype(page, migratetype); in unset_migratetype_isolate()
131 static inline struct page *
162 struct page *page; in start_isolate_page_range() local
170 page = __first_valid_page(pfn, pageblock_nr_pages); in start_isolate_page_range()
171 if (page && in start_isolate_page_range()
172 set_migratetype_isolate(page, skip_hwpoisoned_pages)) { in start_isolate_page_range()
194 struct page *page; in undo_isolate_page_range() local
200 page = __first_valid_page(pfn, pageblock_nr_pages); in undo_isolate_page_range()
201 if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE) in undo_isolate_page_range()
203 unset_migratetype_isolate(page, migratetype); in undo_isolate_page_range()
218 struct page *page; in __test_page_isolated_in_pageblock() local
225 page = pfn_to_page(pfn); in __test_page_isolated_in_pageblock()
226 if (PageBuddy(page)) { in __test_page_isolated_in_pageblock()
234 if (get_freepage_migratetype(page) != MIGRATE_ISOLATE) { in __test_page_isolated_in_pageblock()
235 struct page *end_page; in __test_page_isolated_in_pageblock()
237 end_page = page + (1 << page_order(page)) - 1; in __test_page_isolated_in_pageblock()
238 move_freepages(page_zone(page), page, end_page, in __test_page_isolated_in_pageblock()
241 pfn += 1 << page_order(page); in __test_page_isolated_in_pageblock()
243 else if (page_count(page) == 0 && in __test_page_isolated_in_pageblock()
244 get_freepage_migratetype(page) == MIGRATE_ISOLATE) in __test_page_isolated_in_pageblock()
246 else if (skip_hwpoisoned_pages && PageHWPoison(page)) { in __test_page_isolated_in_pageblock()
266 struct page *page; in test_pages_isolated() local
276 page = __first_valid_page(pfn, pageblock_nr_pages); in test_pages_isolated()
277 if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE) in test_pages_isolated()
280 page = __first_valid_page(start_pfn, end_pfn - start_pfn); in test_pages_isolated()
281 if ((pfn < end_pfn) || !page) in test_pages_isolated()
284 zone = page_zone(page); in test_pages_isolated()
292 struct page *alloc_migrate_target(struct page *page, unsigned long private, in alloc_migrate_target() argument
302 if (PageHuge(page)) { in alloc_migrate_target()
303 nodemask_t src = nodemask_of_node(page_to_nid(page)); in alloc_migrate_target()
306 return alloc_huge_page_node(page_hstate(compound_head(page)), in alloc_migrate_target()
307 next_node(page_to_nid(page), dst)); in alloc_migrate_target()
310 if (PageHighMem(page)) in alloc_migrate_target()