Lines Matching refs:pfn
227 unsigned long i, pfn, end_pfn, nr_pages; in register_page_bootmem_info_node() local
237 pfn = pgdat->node_start_pfn; in register_page_bootmem_info_node()
241 for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) { in register_page_bootmem_info_node()
248 if (pfn_valid(pfn) && (early_pfn_to_nid(pfn) == node)) in register_page_bootmem_info_node()
249 register_page_bootmem_info_section(pfn); in register_page_bootmem_info_node()
254 static int check_pfn_span(unsigned long pfn, unsigned long nr_pages, in check_pfn_span() argument
272 if (!IS_ALIGNED(pfn, min_align) in check_pfn_span()
275 reason, pfn, pfn + nr_pages - 1); in check_pfn_span()
287 int __ref __add_pages(int nid, unsigned long pfn, unsigned long nr_pages, in __add_pages() argument
298 if (altmap->base_pfn != pfn in __add_pages()
306 err = check_pfn_span(pfn, nr_pages, "add"); in __add_pages()
310 start_sec = pfn_to_section_nr(pfn); in __add_pages()
311 end_sec = pfn_to_section_nr(pfn + nr_pages - 1); in __add_pages()
316 - (pfn & ~PAGE_SECTION_MASK)); in __add_pages()
317 err = sparse_add_section(nid, pfn, pfns, altmap); in __add_pages()
320 pfn += pfns; in __add_pages()
354 unsigned long pfn; in find_biggest_section_pfn() local
357 pfn = end_pfn - 1; in find_biggest_section_pfn()
358 for (; pfn >= start_pfn; pfn -= PAGES_PER_SUBSECTION) { in find_biggest_section_pfn()
359 if (unlikely(!pfn_to_online_page(pfn))) in find_biggest_section_pfn()
362 if (unlikely(pfn_to_nid(pfn) != nid)) in find_biggest_section_pfn()
365 if (zone && zone != page_zone(pfn_to_page(pfn))) in find_biggest_section_pfn()
368 return pfn; in find_biggest_section_pfn()
380 unsigned long pfn; in shrink_zone_span() local
391 pfn = find_smallest_section_pfn(nid, zone, end_pfn, in shrink_zone_span()
393 if (pfn) { in shrink_zone_span()
394 zone->zone_start_pfn = pfn; in shrink_zone_span()
395 zone->spanned_pages = zone_end_pfn - pfn; in shrink_zone_span()
404 pfn = find_biggest_section_pfn(nid, zone, zone_start_pfn, in shrink_zone_span()
406 if (pfn) in shrink_zone_span()
407 zone->spanned_pages = pfn - zone_start_pfn + 1; in shrink_zone_span()
416 pfn = zone_start_pfn; in shrink_zone_span()
417 for (; pfn < zone_end_pfn; pfn += PAGES_PER_SUBSECTION) { in shrink_zone_span()
418 if (unlikely(!pfn_to_online_page(pfn))) in shrink_zone_span()
421 if (page_zone(pfn_to_page(pfn)) != zone) in shrink_zone_span()
425 if (pfn >= start_pfn && pfn < end_pfn) in shrink_zone_span()
490 static void __remove_section(struct zone *zone, unsigned long pfn, in __remove_section() argument
494 struct mem_section *ms = __nr_to_section(pfn_to_section_nr(pfn)); in __remove_section()
499 __remove_zone(zone, pfn, nr_pages); in __remove_section()
500 sparse_remove_section(ms, pfn, nr_pages, map_offset, altmap); in __remove_section()
515 void __remove_pages(struct zone *zone, unsigned long pfn, in __remove_pages() argument
525 if (check_pfn_span(pfn, nr_pages, "remove")) in __remove_pages()
528 start_sec = pfn_to_section_nr(pfn); in __remove_pages()
529 end_sec = pfn_to_section_nr(pfn + nr_pages - 1); in __remove_pages()
535 - (pfn & ~PAGE_SECTION_MASK)); in __remove_pages()
536 __remove_section(zone, pfn, pfns, map_offset, altmap); in __remove_pages()
537 pfn += pfns; in __remove_pages()
615 unsigned long pfn; in online_pages_range() local
623 for (pfn = start_pfn; pfn < end_pfn; pfn += 1ul << order) { in online_pages_range()
624 order = min(MAX_ORDER - 1, get_order(PFN_PHYS(end_pfn - pfn))); in online_pages_range()
626 if (WARN_ON_ONCE(!IS_ALIGNED(pfn, 1ul << order))) in online_pages_range()
628 (*online_page_callback)(pfn_to_page(pfn), order); in online_pages_range()
785 int __ref online_pages(unsigned long pfn, unsigned long nr_pages, int online_type) in online_pages() argument
802 mem = find_memory_block(__pfn_to_section(pfn)); in online_pages()
807 zone = zone_for_pfn_range(online_type, nid, pfn, nr_pages); in online_pages()
808 move_pfn_range_to_zone(zone, pfn, nr_pages, NULL); in online_pages()
810 arg.start_pfn = pfn; in online_pages()
829 ret = walk_system_ram_range(pfn, nr_pages, &onlined_pages, in online_pages()
867 (unsigned long long) pfn << PAGE_SHIFT, in online_pages()
868 (((unsigned long long) pfn + nr_pages) << PAGE_SHIFT) - 1); in online_pages()
1144 static unsigned long next_active_pageblock(unsigned long pfn) in next_active_pageblock() argument
1146 struct page *page = pfn_to_page(pfn); in next_active_pageblock()
1149 BUG_ON(pfn & (pageblock_nr_pages - 1)); in next_active_pageblock()
1157 return pfn + (1 << order); in next_active_pageblock()
1160 return pfn + pageblock_nr_pages; in next_active_pageblock()
1163 static bool is_pageblock_removable_nolock(unsigned long pfn) in is_pageblock_removable_nolock() argument
1165 struct page *page = pfn_to_page(pfn); in is_pageblock_removable_nolock()
1179 pfn = page_to_pfn(page); in is_pageblock_removable_nolock()
1180 if (!zone_spans_pfn(zone, pfn)) in is_pageblock_removable_nolock()
1189 unsigned long end_pfn, pfn; in is_mem_section_removable() local
1195 for (pfn = start_pfn; pfn < end_pfn; pfn = next_active_pageblock(pfn)) { in is_mem_section_removable()
1196 if (!is_pageblock_removable_nolock(pfn)) in is_mem_section_removable()
1212 unsigned long pfn, sec_end_pfn; in test_pages_in_a_zone() local
1217 for (pfn = start_pfn, sec_end_pfn = SECTION_ALIGN_UP(start_pfn + 1); in test_pages_in_a_zone()
1218 pfn < end_pfn; in test_pages_in_a_zone()
1219 pfn = sec_end_pfn, sec_end_pfn += PAGES_PER_SECTION) { in test_pages_in_a_zone()
1221 if (!present_section_nr(pfn_to_section_nr(pfn))) in test_pages_in_a_zone()
1223 for (; pfn < sec_end_pfn && pfn < end_pfn; in test_pages_in_a_zone()
1224 pfn += MAX_ORDER_NR_PAGES) { in test_pages_in_a_zone()
1228 !pfn_valid_within(pfn + i)) in test_pages_in_a_zone()
1230 if (i == MAX_ORDER_NR_PAGES || pfn + i >= end_pfn) in test_pages_in_a_zone()
1233 if (zone && !zone_spans_pfn(zone, pfn + i)) in test_pages_in_a_zone()
1235 page = pfn_to_page(pfn + i); in test_pages_in_a_zone()
1239 start = pfn + i; in test_pages_in_a_zone()
1241 end = pfn + MAX_ORDER_NR_PAGES; in test_pages_in_a_zone()
1262 unsigned long pfn; in scan_movable_pages() local
1264 for (pfn = start; pfn < end; pfn++) { in scan_movable_pages()
1268 if (!pfn_valid(pfn)) in scan_movable_pages()
1270 page = pfn_to_page(pfn); in scan_movable_pages()
1272 return pfn; in scan_movable_pages()
1274 return pfn; in scan_movable_pages()
1280 return pfn; in scan_movable_pages()
1282 pfn += skip - 1; in scan_movable_pages()
1307 unsigned long pfn; in do_migrate_range() local
1312 for (pfn = start_pfn; pfn < end_pfn; pfn++) { in do_migrate_range()
1313 if (!pfn_valid(pfn)) in do_migrate_range()
1315 page = pfn_to_page(pfn); in do_migrate_range()
1319 pfn = page_to_pfn(head) + compound_nr(head) - 1; in do_migrate_range()
1323 pfn = page_to_pfn(compound_head(page)) in do_migrate_range()
1358 pr_warn("failed to isolate pfn %lx\n", pfn); in do_migrate_range()
1484 unsigned long pfn, nr_pages; in __offline_pages() local
1530 for (pfn = start_pfn; pfn;) { in __offline_pages()
1540 pfn = scan_movable_pages(pfn, end_pfn); in __offline_pages()
1541 if (pfn) { in __offline_pages()
1546 do_migrate_range(pfn, end_pfn); in __offline_pages()