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()
105 __isolate_free_page(page, order); in unset_migratetype_isolate()
106 kernel_map_pages(page, (1 << order), 1); in unset_migratetype_isolate()
107 set_page_refcounted(page); in unset_migratetype_isolate()
108 isolated_page = page; in unset_migratetype_isolate()
119 nr_pages = move_freepages_block(zone, page, migratetype); in unset_migratetype_isolate()
122 set_pageblock_migratetype(page, migratetype); in unset_migratetype_isolate()
130 static inline struct page *
161 struct page *page; in start_isolate_page_range() local
169 page = __first_valid_page(pfn, pageblock_nr_pages); in start_isolate_page_range()
170 if (page && in start_isolate_page_range()
171 set_migratetype_isolate(page, skip_hwpoisoned_pages)) { in start_isolate_page_range()
193 struct page *page; in undo_isolate_page_range() local
199 page = __first_valid_page(pfn, pageblock_nr_pages); in undo_isolate_page_range()
200 if (!page || get_pageblock_migratetype(page) != MIGRATE_ISOLATE) in undo_isolate_page_range()
202 unset_migratetype_isolate(page, migratetype); in undo_isolate_page_range()
217 struct page *page; in __test_page_isolated_in_pageblock() local
224 page = pfn_to_page(pfn); in __test_page_isolated_in_pageblock()
225 if (PageBuddy(page)) { in __test_page_isolated_in_pageblock()
233 if (get_freepage_migratetype(page) != MIGRATE_ISOLATE) { in __test_page_isolated_in_pageblock()
234 struct page *end_page; in __test_page_isolated_in_pageblock()
236 end_page = page + (1 << page_order(page)) - 1; in __test_page_isolated_in_pageblock()
237 move_freepages(page_zone(page), page, end_page, in __test_page_isolated_in_pageblock()
240 pfn += 1 << page_order(page); in __test_page_isolated_in_pageblock()
242 else if (page_count(page) == 0 && in __test_page_isolated_in_pageblock()
243 get_freepage_migratetype(page) == MIGRATE_ISOLATE) in __test_page_isolated_in_pageblock()
245 else if (skip_hwpoisoned_pages && PageHWPoison(page)) { in __test_page_isolated_in_pageblock()
265 struct page *page; in test_pages_isolated() local
275 page = __first_valid_page(pfn, pageblock_nr_pages); in test_pages_isolated()
276 if (page && get_pageblock_migratetype(page) != MIGRATE_ISOLATE) in test_pages_isolated()
279 page = __first_valid_page(start_pfn, end_pfn - start_pfn); in test_pages_isolated()
280 if ((pfn < end_pfn) || !page) in test_pages_isolated()
283 zone = page_zone(page); in test_pages_isolated()
291 struct page *alloc_migrate_target(struct page *page, unsigned long private, in alloc_migrate_target() argument
301 if (PageHuge(page)) { in alloc_migrate_target()
302 int node = next_online_node(page_to_nid(page)); in alloc_migrate_target()
305 return alloc_huge_page_node(page_hstate(compound_head(page)), in alloc_migrate_target()
309 if (PageHighMem(page)) in alloc_migrate_target()