Lines Matching refs:zone

329 static unsigned long find_smallest_section_pfn(int nid, struct zone *zone,  in find_smallest_section_pfn()  argument
340 if (zone && zone != page_zone(pfn_to_page(start_pfn))) in find_smallest_section_pfn()
350 static unsigned long find_biggest_section_pfn(int nid, struct zone *zone, in find_biggest_section_pfn() argument
365 if (zone && zone != page_zone(pfn_to_page(pfn))) in find_biggest_section_pfn()
374 static void shrink_zone_span(struct zone *zone, unsigned long start_pfn, in shrink_zone_span() argument
377 unsigned long zone_start_pfn = zone->zone_start_pfn; in shrink_zone_span()
378 unsigned long z = zone_end_pfn(zone); /* zone_end_pfn namespace clash */ in shrink_zone_span()
381 int nid = zone_to_nid(zone); in shrink_zone_span()
383 zone_span_writelock(zone); in shrink_zone_span()
391 pfn = find_smallest_section_pfn(nid, zone, end_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()
407 zone->spanned_pages = pfn - zone_start_pfn + 1; in shrink_zone_span()
421 if (page_zone(pfn_to_page(pfn)) != zone) in shrink_zone_span()
429 zone_span_writeunlock(zone); in shrink_zone_span()
434 zone->zone_start_pfn = 0; in shrink_zone_span()
435 zone->spanned_pages = 0; in shrink_zone_span()
436 zone_span_writeunlock(zone); in shrink_zone_span()
442 struct zone *zone; in update_pgdat_span() local
444 for (zone = pgdat->node_zones; in update_pgdat_span()
445 zone < pgdat->node_zones + MAX_NR_ZONES; zone++) { in update_pgdat_span()
446 unsigned long zone_end_pfn = zone->zone_start_pfn + in update_pgdat_span()
447 zone->spanned_pages; in update_pgdat_span()
450 if (!zone->spanned_pages) in update_pgdat_span()
453 node_start_pfn = zone->zone_start_pfn; in update_pgdat_span()
460 if (zone->zone_start_pfn < node_start_pfn) in update_pgdat_span()
461 node_start_pfn = zone->zone_start_pfn; in update_pgdat_span()
468 static void __remove_zone(struct zone *zone, unsigned long start_pfn, in __remove_zone() argument
471 struct pglist_data *pgdat = zone->zone_pgdat; in __remove_zone()
480 if (zone_idx(zone) == ZONE_DEVICE) in __remove_zone()
484 pgdat_resize_lock(zone->zone_pgdat, &flags); in __remove_zone()
485 shrink_zone_span(zone, start_pfn, start_pfn + nr_pages); in __remove_zone()
487 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __remove_zone()
490 static void __remove_section(struct zone *zone, unsigned long pfn, in __remove_section() argument
499 __remove_zone(zone, pfn, nr_pages); in __remove_section()
515 void __remove_pages(struct zone *zone, unsigned long pfn, in __remove_pages() argument
523 clear_zone_contiguous(zone); in __remove_pages()
536 __remove_section(zone, pfn, pfns, map_offset, altmap); in __remove_pages()
542 set_zone_contiguous(zone); in __remove_pages()
640 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_online() argument
642 int nid = zone_to_nid(zone); in node_states_check_changes_online()
650 if (zone_idx(zone) <= ZONE_NORMAL && !node_state(nid, N_NORMAL_MEMORY)) in node_states_check_changes_online()
653 if (zone_idx(zone) <= ZONE_HIGHMEM && !node_state(nid, N_HIGH_MEMORY)) in node_states_check_changes_online()
670 static void __meminit resize_zone_range(struct zone *zone, unsigned long start_pfn, in resize_zone_range() argument
673 unsigned long old_end_pfn = zone_end_pfn(zone); in resize_zone_range()
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()
697 void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, in move_pfn_range_to_zone() argument
700 struct pglist_data *pgdat = zone->zone_pgdat; in move_pfn_range_to_zone()
704 clear_zone_contiguous(zone); in move_pfn_range_to_zone()
708 zone_span_writelock(zone); in move_pfn_range_to_zone()
709 if (zone_is_empty(zone)) in move_pfn_range_to_zone()
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()
712 zone_span_writeunlock(zone); in move_pfn_range_to_zone()
722 memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, in move_pfn_range_to_zone()
725 set_zone_contiguous(zone); 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()
740 struct zone *zone = &pgdat->node_zones[zid]; in default_kernel_zone_for_pfn() local
742 if (zone_intersects(zone, start_pfn, nr_pages)) in default_kernel_zone_for_pfn()
743 return zone; 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()
752 struct zone *kernel_zone = default_kernel_zone_for_pfn(nid, start_pfn, in default_zone_for_pfn()
754 struct zone *movable_zone = &NODE_DATA(nid)->node_zones[ZONE_MOVABLE]; 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()
789 struct zone *zone; in online_pages() local
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()
812 node_states_check_changes_online(nr_pages, zone, &arg); in online_pages()
824 if (!populated_zone(zone)) { in online_pages()
826 setup_zone_pageset(zone); in online_pages()
834 zone_pcp_reset(zone); in online_pages()
838 zone->present_pages += onlined_pages; in online_pages()
840 pgdat_resize_lock(zone->zone_pgdat, &flags); in online_pages()
841 zone->zone_pgdat->node_present_pages += onlined_pages; in online_pages()
842 pgdat_resize_unlock(zone->zone_pgdat, &flags); in online_pages()
844 shuffle_zone(zone); in online_pages()
850 zone_pcp_update(zone); in online_pages()
877 struct zone *z; in reset_node_present_pages()
1166 struct zone *zone; in is_pageblock_removable_nolock() local
1178 zone = page_zone(page); in is_pageblock_removable_nolock()
1180 if (!zone_spans_pfn(zone, pfn)) in is_pageblock_removable_nolock()
1183 return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, SKIP_HWPOISON); in is_pageblock_removable_nolock()
1214 struct zone *zone = NULL; in test_pages_in_a_zone() local
1233 if (zone && !zone_spans_pfn(zone, pfn + i)) in test_pages_in_a_zone()
1236 if (zone && page_zone(page) != zone) in test_pages_in_a_zone()
1238 if (!zone) in test_pages_in_a_zone()
1240 zone = page_zone(page); in test_pages_in_a_zone()
1245 if (zone) { in test_pages_in_a_zone()
1416 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_offline() argument
1418 struct pglist_data *pgdat = zone->zone_pgdat; in node_states_check_changes_offline()
1436 if (zone_idx(zone) <= ZONE_NORMAL && nr_pages >= present_pages) in node_states_check_changes_offline()
1437 arg->status_change_nid_normal = zone_to_nid(zone); in node_states_check_changes_offline()
1449 if (zone_idx(zone) <= ZONE_HIGHMEM && nr_pages >= present_pages) in node_states_check_changes_offline()
1450 arg->status_change_nid_high = zone_to_nid(zone); in node_states_check_changes_offline()
1466 arg->status_change_nid = zone_to_nid(zone); in node_states_check_changes_offline()
1489 struct zone *zone; in __offline_pages() local
1504 zone = page_zone(pfn_to_page(valid_start)); in __offline_pages()
1505 node = zone_to_nid(zone); in __offline_pages()
1520 node_states_check_changes_offline(nr_pages, zone, &arg); in __offline_pages()
1575 spin_lock_irqsave(&zone->lock, flags); in __offline_pages()
1576 zone->nr_isolate_pageblock -= nr_isolate_pageblock; in __offline_pages()
1577 spin_unlock_irqrestore(&zone->lock, flags); in __offline_pages()
1581 zone->present_pages -= offlined_pages; in __offline_pages()
1583 pgdat_resize_lock(zone->zone_pgdat, &flags); in __offline_pages()
1584 zone->zone_pgdat->node_present_pages -= offlined_pages; in __offline_pages()
1585 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __offline_pages()
1589 if (!populated_zone(zone)) { in __offline_pages()
1590 zone_pcp_reset(zone); in __offline_pages()
1593 zone_pcp_update(zone); in __offline_pages()