• Home
  • Raw
  • Download

Lines Matching refs:page

78 	struct page *page, *next;  in release_freepages()  local
81 list_for_each_entry_safe(page, next, freelist, lru) { in release_freepages()
82 unsigned long pfn = page_to_pfn(page); in release_freepages()
83 list_del(&page->lru); in release_freepages()
84 __free_page(page); in release_freepages()
95 struct page *page, *next; in split_map_pages() local
98 list_for_each_entry_safe(page, next, list, lru) { in split_map_pages()
99 list_del(&page->lru); in split_map_pages()
101 order = page_private(page); in split_map_pages()
104 post_alloc_hook(page, order, __GFP_MOVABLE); in split_map_pages()
106 split_page(page, order); in split_map_pages()
109 list_add(&page->lru, &tmp_list); in split_map_pages()
110 page++; in split_map_pages()
119 int PageMovable(struct page *page) in PageMovable() argument
123 VM_BUG_ON_PAGE(!PageLocked(page), page); in PageMovable()
124 if (!__PageMovable(page)) in PageMovable()
127 mapping = page_mapping(page); in PageMovable()
135 void __SetPageMovable(struct page *page, struct address_space *mapping) in __SetPageMovable() argument
137 VM_BUG_ON_PAGE(!PageLocked(page), page); in __SetPageMovable()
138 VM_BUG_ON_PAGE((unsigned long)mapping & PAGE_MAPPING_MOVABLE, page); in __SetPageMovable()
139 page->mapping = (void *)((unsigned long)mapping | PAGE_MAPPING_MOVABLE); in __SetPageMovable()
143 void __ClearPageMovable(struct page *page) in __ClearPageMovable() argument
145 VM_BUG_ON_PAGE(!PageLocked(page), page); in __ClearPageMovable()
146 VM_BUG_ON_PAGE(!PageMovable(page), page); in __ClearPageMovable()
152 page->mapping = (void *)((unsigned long)page->mapping & in __ClearPageMovable()
228 struct page *page) in isolation_suitable() argument
233 return !get_pageblock_skip(page); in isolation_suitable()
249 static bool pageblock_skip_persistent(struct page *page) in pageblock_skip_persistent() argument
251 if (!PageCompound(page)) in pageblock_skip_persistent()
254 page = compound_head(page); in pageblock_skip_persistent()
256 if (compound_order(page) >= pageblock_order) in pageblock_skip_persistent()
266 struct page *page = pfn_to_online_page(pfn); in __reset_isolation_pfn() local
267 struct page *block_page; in __reset_isolation_pfn()
268 struct page *end_page; in __reset_isolation_pfn()
271 if (!page) in __reset_isolation_pfn()
273 if (zone != page_zone(page)) in __reset_isolation_pfn()
275 if (pageblock_skip_persistent(page)) in __reset_isolation_pfn()
282 if (check_source && check_target && !get_pageblock_skip(page)) in __reset_isolation_pfn()
290 get_pageblock_migratetype(page) != MIGRATE_MOVABLE) in __reset_isolation_pfn()
298 page = block_page; in __reset_isolation_pfn()
316 if (check_source && PageLRU(page)) { in __reset_isolation_pfn()
317 clear_pageblock_skip(page); in __reset_isolation_pfn()
321 if (check_target && PageBuddy(page)) { in __reset_isolation_pfn()
322 clear_pageblock_skip(page); in __reset_isolation_pfn()
327 page += (1 << PAGE_ALLOC_COSTLY_ORDER); in __reset_isolation_pfn()
329 } while (page <= end_page); in __reset_isolation_pfn()
410 static bool test_and_set_skip(struct compact_control *cc, struct page *page, in test_and_set_skip() argument
422 skip = get_pageblock_skip(page); in test_and_set_skip()
424 set_pageblock_skip(page); in test_and_set_skip()
451 struct page *page, unsigned long pfn) in update_pageblock_skip() argument
458 if (!page) in update_pageblock_skip()
461 set_pageblock_skip(page); in update_pageblock_skip()
469 struct page *page) in isolation_suitable() argument
474 static inline bool pageblock_skip_persistent(struct page *page) in pageblock_skip_persistent() argument
480 struct page *page, unsigned long pfn) in update_pageblock_skip() argument
488 static bool test_and_set_skip(struct compact_control *cc, struct page *page, in test_and_set_skip() argument
566 struct page *cursor; in isolate_freepages_block()
581 struct page *page = cursor; in isolate_freepages_block() local
603 if (PageCompound(page)) { in isolate_freepages_block()
604 const unsigned int order = compound_order(page); in isolate_freepages_block()
613 if (!PageBuddy(page)) in isolate_freepages_block()
628 if (!PageBuddy(page)) in isolate_freepages_block()
633 order = buddy_order(page); in isolate_freepages_block()
634 isolated = __isolate_free_page(page, order); in isolate_freepages_block()
637 set_page_private(page, order); in isolate_freepages_block()
641 list_add_tail(&page->lru, freelist); in isolate_freepages_block()
772 unsigned long isolate_and_split_free_page(struct page *page, in isolate_and_split_free_page() argument
778 if (!PageBuddy(page)) in isolate_and_split_free_page()
781 order = buddy_order(page); in isolate_and_split_free_page()
782 isolated = __isolate_free_page(page, order); in isolate_and_split_free_page()
786 set_page_private(page, order); in isolate_and_split_free_page()
787 list_add(&page->lru, list); in isolate_and_split_free_page()
838 struct page *page = NULL, *valid_page = NULL; in isolate_migratepages_block() local
912 page = pfn_to_page(low_pfn); in isolate_migratepages_block()
921 if (!cc->ignore_skip_hint && get_pageblock_skip(page)) { in isolate_migratepages_block()
925 valid_page = page; in isolate_migratepages_block()
934 if (PageBuddy(page)) { in isolate_migratepages_block()
935 unsigned long freepage_order = buddy_order_unsafe(page); in isolate_migratepages_block()
955 if (PageCompound(page) && !cc->alloc_contig) { in isolate_migratepages_block()
956 const unsigned int order = compound_order(page); in isolate_migratepages_block()
968 if (!PageLRU(page)) { in isolate_migratepages_block()
973 if (unlikely(__PageMovable(page)) && in isolate_migratepages_block()
974 !PageIsolated(page)) { in isolate_migratepages_block()
981 if (!isolate_movable_page(page, isolate_mode)) in isolate_migratepages_block()
993 if (!page_mapping(page) && in isolate_migratepages_block()
994 page_count(page) > page_mapcount(page)) in isolate_migratepages_block()
1001 if (!(cc->gfp_mask & __GFP_FS) && page_mapping(page)) in isolate_migratepages_block()
1012 if (test_and_set_skip(cc, page, low_pfn)) in isolate_migratepages_block()
1017 if (!PageLRU(page)) in isolate_migratepages_block()
1025 if (unlikely(PageCompound(page) && !cc->alloc_contig)) { in isolate_migratepages_block()
1026 low_pfn += compound_nr(page) - 1; in isolate_migratepages_block()
1031 lruvec = mem_cgroup_page_lruvec(page, pgdat); in isolate_migratepages_block()
1034 if (__isolate_lru_page(page, isolate_mode) != 0) in isolate_migratepages_block()
1038 if (PageCompound(page)) in isolate_migratepages_block()
1039 low_pfn += compound_nr(page) - 1; in isolate_migratepages_block()
1042 del_page_from_lru_list(page, lruvec, page_lru(page)); in isolate_migratepages_block()
1043 mod_node_page_state(page_pgdat(page), in isolate_migratepages_block()
1044 NR_ISOLATED_ANON + page_is_file_lru(page), in isolate_migratepages_block()
1045 thp_nr_pages(page)); in isolate_migratepages_block()
1048 list_add(&page->lru, &cc->migratepages); in isolate_migratepages_block()
1049 cc->nr_migratepages += compound_nr(page); in isolate_migratepages_block()
1050 nr_isolated += compound_nr(page); in isolate_migratepages_block()
1180 struct page *page) in suitable_migration_source() argument
1184 if (pageblock_skip_persistent(page)) in suitable_migration_source()
1190 block_mt = get_pageblock_migratetype(page); in suitable_migration_source()
1200 struct page *page) in suitable_migration_target() argument
1203 if (PageBuddy(page)) { in suitable_migration_target()
1209 if (buddy_order_unsafe(page) >= pageblock_order) in suitable_migration_target()
1217 if (is_migrate_movable(get_pageblock_migratetype(page))) in suitable_migration_target()
1248 move_freelist_head(struct list_head *freelist, struct page *freepage) in move_freelist_head()
1266 move_freelist_tail(struct list_head *freelist, struct page *freepage) in move_freelist_tail()
1281 struct page *page; in fast_isolate_around() local
1295 page = pageblock_pfn_to_page(start_pfn, end_pfn, cc->zone); in fast_isolate_around()
1296 if (!page) in fast_isolate_around()
1303 set_pageblock_skip(page); in fast_isolate_around()
1334 struct page *page = NULL; in fast_isolate_freepages() local
1369 !page && order >= 0; in fast_isolate_freepages()
1373 struct page *freepage; in fast_isolate_freepages()
1397 page = freepage; in fast_isolate_freepages()
1413 if (!page && high_pfn) { in fast_isolate_freepages()
1414 page = pfn_to_page(high_pfn); in fast_isolate_freepages()
1417 freepage = page; in fast_isolate_freepages()
1424 if (page) { in fast_isolate_freepages()
1425 if (__isolate_free_page(page, order)) { in fast_isolate_freepages()
1426 set_page_private(page, order); in fast_isolate_freepages()
1429 list_add_tail(&page->lru, &cc->freepages); in fast_isolate_freepages()
1434 page = NULL; in fast_isolate_freepages()
1448 if (!page) { in fast_isolate_freepages()
1457 page = pfn_to_page(highest); in fast_isolate_freepages()
1461 page = pageblock_pfn_to_page(min_pfn, in fast_isolate_freepages()
1477 if (!page) in fast_isolate_freepages()
1480 low_pfn = page_to_pfn(page); in fast_isolate_freepages()
1492 struct page *page; in isolate_freepages() local
1541 page = pageblock_pfn_to_page(block_start_pfn, block_end_pfn, in isolate_freepages()
1543 if (!page) in isolate_freepages()
1547 if (!suitable_migration_target(cc, page)) in isolate_freepages()
1551 if (!isolation_suitable(cc, page)) in isolate_freepages()
1560 update_pageblock_skip(cc, page, block_start_pfn); in isolate_freepages()
1606 static struct page *compaction_alloc(struct page *migratepage, in compaction_alloc()
1610 struct page *freepage; in compaction_alloc()
1619 freepage = list_entry(cc->freepages.next, struct page, lru); in compaction_alloc()
1631 static void compaction_free(struct page *page, unsigned long data) in compaction_free() argument
1635 list_add(&page->lru, &cc->freepages); in compaction_free()
1741 struct page *freepage; in fast_find_migrateblock()
1806 struct page *page; in isolate_migratepages() local
1850 page = pageblock_pfn_to_page(block_start_pfn, in isolate_migratepages()
1852 if (!page) in isolate_migratepages()
1863 !fast_find_block && !isolation_suitable(cc, page)) in isolate_migratepages()
1874 if (!suitable_migration_source(cc, page)) { in isolate_migratepages()
2409 if (capc && capc->page) { in compact_zone()
2447 struct page **capture) in compact_zone_order()
2466 .page = NULL, in compact_zone_order()
2488 *capture = READ_ONCE(capc.page); in compact_zone_order()
2508 enum compact_priority prio, struct page **capture) in try_to_compact_pages()