Lines Matching refs:start_pfn
166 static void register_page_bootmem_info_section(unsigned long start_pfn) in register_page_bootmem_info_section() argument
173 section_nr = pfn_to_section_nr(start_pfn); in register_page_bootmem_info_section()
201 static void register_page_bootmem_info_section(unsigned long start_pfn) in register_page_bootmem_info_section() argument
208 section_nr = pfn_to_section_nr(start_pfn); in register_page_bootmem_info_section()
330 unsigned long start_pfn, in find_smallest_section_pfn() argument
333 for (; start_pfn < end_pfn; start_pfn += PAGES_PER_SUBSECTION) { in find_smallest_section_pfn()
334 if (unlikely(!pfn_to_online_page(start_pfn))) in find_smallest_section_pfn()
337 if (unlikely(pfn_to_nid(start_pfn) != nid)) in find_smallest_section_pfn()
340 if (zone && zone != page_zone(pfn_to_page(start_pfn))) in find_smallest_section_pfn()
343 return start_pfn; in find_smallest_section_pfn()
351 unsigned long start_pfn, in find_biggest_section_pfn() argument
358 for (; pfn >= start_pfn; pfn -= PAGES_PER_SUBSECTION) { in find_biggest_section_pfn()
374 static void shrink_zone_span(struct zone *zone, unsigned long start_pfn, in shrink_zone_span() argument
384 if (zone_start_pfn == start_pfn) { in shrink_zone_span()
405 start_pfn); in shrink_zone_span()
425 if (pfn >= start_pfn && pfn < end_pfn) in shrink_zone_span()
468 static void __remove_zone(struct zone *zone, unsigned long start_pfn, in __remove_zone() argument
485 shrink_zone_span(zone, start_pfn, start_pfn + nr_pages); in __remove_zone()
611 static int online_pages_range(unsigned long start_pfn, unsigned long nr_pages, in online_pages_range() argument
614 const unsigned long end_pfn = start_pfn + nr_pages; in online_pages_range()
623 for (pfn = start_pfn; pfn < end_pfn; pfn += 1ul << order) { in online_pages_range()
632 online_mem_sections(start_pfn, end_pfn); in online_pages_range()
670 static void __meminit resize_zone_range(struct zone *zone, unsigned long start_pfn, in resize_zone_range() argument
675 if (zone_is_empty(zone) || start_pfn < zone->zone_start_pfn) in resize_zone_range()
676 zone->zone_start_pfn = start_pfn; in resize_zone_range()
678 zone->spanned_pages = max(start_pfn + nr_pages, old_end_pfn) - zone->zone_start_pfn; in resize_zone_range()
681 static void __meminit resize_pgdat_range(struct pglist_data *pgdat, unsigned long start_pfn, in resize_pgdat_range() argument
686 if (!pgdat->node_spanned_pages || start_pfn < pgdat->node_start_pfn) in resize_pgdat_range()
687 pgdat->node_start_pfn = start_pfn; in resize_pgdat_range()
689 pgdat->node_spanned_pages = max(start_pfn + nr_pages, old_end_pfn) - pgdat->node_start_pfn; in resize_pgdat_range()
697 void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, in move_pfn_range_to_zone() argument
710 init_currently_empty_zone(zone, start_pfn, nr_pages); in move_pfn_range_to_zone()
711 resize_zone_range(zone, start_pfn, nr_pages); in move_pfn_range_to_zone()
713 resize_pgdat_range(pgdat, start_pfn, nr_pages); in move_pfn_range_to_zone()
722 memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, in move_pfn_range_to_zone()
733 static struct zone *default_kernel_zone_for_pfn(int nid, unsigned long start_pfn, in default_kernel_zone_for_pfn() argument
742 if (zone_intersects(zone, start_pfn, nr_pages)) in default_kernel_zone_for_pfn()
749 static inline struct zone *default_zone_for_pfn(int nid, unsigned long start_pfn, in default_zone_for_pfn() argument
752 struct zone *kernel_zone = default_kernel_zone_for_pfn(nid, start_pfn, in default_zone_for_pfn()
755 bool in_kernel = zone_intersects(kernel_zone, start_pfn, nr_pages); in default_zone_for_pfn()
756 bool in_movable = zone_intersects(movable_zone, start_pfn, nr_pages); in default_zone_for_pfn()
773 struct zone * zone_for_pfn_range(int online_type, int nid, unsigned start_pfn, in zone_for_pfn_range() argument
777 return default_kernel_zone_for_pfn(nid, start_pfn, nr_pages); in zone_for_pfn_range()
782 return default_zone_for_pfn(nid, start_pfn, nr_pages); in zone_for_pfn_range()
810 arg.start_pfn = pfn; in online_pages()
889 unsigned long start_pfn = PFN_DOWN(start); in hotadd_new_pgdat() local
921 pgdat->node_start_pfn = start_pfn; in hotadd_new_pgdat()
1187 bool is_mem_section_removable(unsigned long start_pfn, unsigned long nr_pages) in is_mem_section_removable() argument
1191 end_pfn = min(start_pfn + nr_pages, in is_mem_section_removable()
1192 zone_end_pfn(page_zone(pfn_to_page(start_pfn)))); in is_mem_section_removable()
1195 for (pfn = start_pfn; pfn < end_pfn; pfn = next_active_pageblock(pfn)) { in is_mem_section_removable()
1209 int test_pages_in_a_zone(unsigned long start_pfn, unsigned long end_pfn, in test_pages_in_a_zone() argument
1217 for (pfn = start_pfn, sec_end_pfn = SECTION_ALIGN_UP(start_pfn + 1); in test_pages_in_a_zone()
1305 do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) in do_migrate_range() argument
1312 for (pfn = start_pfn; pfn < end_pfn; pfn++) { in do_migrate_range()
1397 check_pages_isolated_cb(unsigned long start_pfn, unsigned long nr_pages, in check_pages_isolated_cb() argument
1400 return test_pages_isolated(start_pfn, start_pfn + nr_pages, true); in check_pages_isolated_cb()
1481 static int __ref __offline_pages(unsigned long start_pfn, in __offline_pages() argument
1497 if (!test_pages_in_a_zone(start_pfn, end_pfn, &valid_start, in __offline_pages()
1506 nr_pages = end_pfn - start_pfn; in __offline_pages()
1509 ret = start_isolate_page_range(start_pfn, end_pfn, in __offline_pages()
1518 arg.start_pfn = start_pfn; in __offline_pages()
1530 for (pfn = start_pfn; pfn;) { in __offline_pages()
1555 ret = dissolve_free_huge_pages(start_pfn, end_pfn); in __offline_pages()
1561 ret = walk_system_ram_range(start_pfn, end_pfn - start_pfn, in __offline_pages()
1567 walk_system_ram_range(start_pfn, end_pfn - start_pfn, in __offline_pages()
1580 adjust_managed_page_count(pfn_to_page(start_pfn), -offlined_pages); in __offline_pages()
1609 undo_isolate_page_range(start_pfn, end_pfn, MIGRATE_MOVABLE); in __offline_pages()
1613 (unsigned long long) start_pfn << PAGE_SHIFT, in __offline_pages()
1621 int offline_pages(unsigned long start_pfn, unsigned long nr_pages) in offline_pages() argument
1623 return __offline_pages(start_pfn, start_pfn + nr_pages); in offline_pages()