Lines Matching refs:nr_pages
234 unsigned long i, pfn, end_pfn, nr_pages;
238 nr_pages = PAGE_ALIGN(sizeof(struct pglist_data)) >> PAGE_SHIFT;
241 for (i = 0; i < nr_pages; i++, page++)
261 static int check_pfn_span(unsigned long pfn, unsigned long nr_pages,
280 || !IS_ALIGNED(nr_pages, min_align)) {
282 reason, pfn, pfn + nr_pages - 1);
289 unsigned long nr_pages)
291 const u64 max_addr = PFN_PHYS(pfn + nr_pages) - 1;
310 int __ref __add_pages(int nid, unsigned long pfn, unsigned long nr_pages,
313 const unsigned long end_pfn = pfn + nr_pages;
321 err = check_hotplug_memory_addressable(pfn, nr_pages);
330 || vmem_altmap_offset(altmap) > nr_pages) {
337 err = check_pfn_span(pfn, nr_pages, "add");
473 unsigned long nr_pages)
475 const unsigned long end_pfn = start_pfn + nr_pages;
503 shrink_zone_span(zone, start_pfn, start_pfn + nr_pages);
510 static void __remove_section(unsigned long pfn, unsigned long nr_pages,
519 sparse_remove_section(ms, pfn, nr_pages, map_offset, altmap);
525 * @nr_pages: number of pages to remove (must be multiple of section size)
533 void __remove_pages(unsigned long pfn, unsigned long nr_pages,
536 const unsigned long end_pfn = pfn + nr_pages;
542 if (check_pfn_span(pfn, nr_pages, "remove"))
611 static void online_pages_range(unsigned long start_pfn, unsigned long nr_pages)
613 const unsigned long end_pfn = start_pfn + nr_pages;
630 static void node_states_check_changes_online(unsigned long nr_pages,
662 unsigned long nr_pages)
669 zone->spanned_pages = max(start_pfn + nr_pages, old_end_pfn) - zone->zone_start_pfn;
673 unsigned long nr_pages)
680 pgdat->node_spanned_pages = max(start_pfn + nr_pages, old_end_pfn) - pgdat->node_start_pfn;
693 unsigned long nr_pages,
706 init_currently_empty_zone(zone, start_pfn, nr_pages);
707 resize_zone_range(zone, start_pfn, nr_pages);
709 resize_pgdat_range(pgdat, start_pfn, nr_pages);
718 memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, 0,
730 unsigned long nr_pages)
738 if (zone_intersects(zone, start_pfn, nr_pages))
746 unsigned long nr_pages)
749 nr_pages);
751 bool in_kernel = zone_intersects(kernel_zone, start_pfn, nr_pages);
752 bool in_movable = zone_intersects(movable_zone, start_pfn, nr_pages);
770 unsigned long start_pfn, unsigned long nr_pages)
773 return default_kernel_zone_for_pfn(nid, start_pfn, nr_pages);
778 return default_zone_for_pfn(nid, start_pfn, nr_pages);
781 int __ref online_pages(unsigned long pfn, unsigned long nr_pages,
791 if (WARN_ON_ONCE(!nr_pages ||
792 !IS_ALIGNED(pfn | nr_pages, PAGES_PER_SECTION)))
798 zone = zone_for_pfn_range(online_type, nid, pfn, nr_pages);
799 move_pfn_range_to_zone(zone, pfn, nr_pages, NULL, MIGRATE_ISOLATE);
802 arg.nr_pages = nr_pages;
803 node_states_check_changes_online(nr_pages, zone, &arg);
815 zone->nr_isolate_pageblock += nr_pages / pageblock_nr_pages;
828 online_pages_range(pfn, nr_pages);
829 zone->present_pages += nr_pages;
832 zone->zone_pgdat->node_present_pages += nr_pages;
841 undo_isolate_page_range(pfn, pfn + nr_pages, MIGRATE_MOVABLE);
868 (((unsigned long long) pfn + nr_pages) << PAGE_SHIFT) - 1);
870 remove_pfn_range_from_zone(zone, pfn, nr_pages);
1387 static void node_states_check_changes_offline(unsigned long nr_pages,
1408 if (zone_idx(zone) <= ZONE_NORMAL && nr_pages >= present_pages)
1421 if (zone_idx(zone) <= ZONE_HIGHMEM && nr_pages >= present_pages)
1430 * If after having accounted all the pages, we see that the nr_pages
1437 if (nr_pages >= present_pages)
1454 unsigned long nr_pages, void *data)
1458 *nr_system_ram_pages += nr_pages;
1462 int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages)
1464 const unsigned long end_pfn = start_pfn + nr_pages;
1473 if (WARN_ON_ONCE(!nr_pages ||
1474 !IS_ALIGNED(start_pfn | nr_pages, PAGES_PER_SECTION)))
1487 walk_system_ram_range(start_pfn, nr_pages, &system_ram_pages,
1489 if (system_ram_pages != nr_pages) {
1515 arg.nr_pages = nr_pages;
1516 node_states_check_changes_offline(nr_pages, zone, &arg);
1582 pr_info("Offlined Pages %ld\n", nr_pages);
1590 zone->nr_isolate_pageblock -= nr_pages / pageblock_nr_pages;
1594 adjust_managed_page_count(pfn_to_page(start_pfn), -nr_pages);
1595 zone->present_pages -= nr_pages;
1598 zone->zone_pgdat->node_present_pages -= nr_pages;
1621 remove_pfn_range_from_zone(zone, start_pfn, nr_pages);