Lines Matching refs:zone
319 static unsigned long find_smallest_section_pfn(int nid, struct zone *zone, in find_smallest_section_pfn() argument
334 if (zone && zone != page_zone(pfn_to_page(start_pfn))) in find_smallest_section_pfn()
344 static unsigned long find_biggest_section_pfn(int nid, struct zone *zone, in find_biggest_section_pfn() argument
362 if (zone && zone != page_zone(pfn_to_page(pfn))) in find_biggest_section_pfn()
371 static void shrink_zone_span(struct zone *zone, unsigned long start_pfn, in shrink_zone_span() argument
374 unsigned long zone_start_pfn = zone->zone_start_pfn; in shrink_zone_span()
375 unsigned long z = zone_end_pfn(zone); /* zone_end_pfn namespace clash */ in shrink_zone_span()
379 int nid = zone_to_nid(zone); in shrink_zone_span()
381 zone_span_writelock(zone); in shrink_zone_span()
389 pfn = find_smallest_section_pfn(nid, zone, end_pfn, in shrink_zone_span()
392 zone->zone_start_pfn = pfn; in shrink_zone_span()
393 zone->spanned_pages = zone_end_pfn - pfn; in shrink_zone_span()
402 pfn = find_biggest_section_pfn(nid, zone, zone_start_pfn, in shrink_zone_span()
405 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()
505 static void __remove_zone(struct zone *zone, unsigned long start_pfn) in __remove_zone() argument
507 struct pglist_data *pgdat = zone->zone_pgdat; in __remove_zone()
511 pgdat_resize_lock(zone->zone_pgdat, &flags); in __remove_zone()
512 shrink_zone_span(zone, start_pfn, start_pfn + nr_pages); in __remove_zone()
514 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __remove_zone()
517 static int __remove_section(struct zone *zone, struct mem_section *ms, in __remove_section() argument
533 __remove_zone(zone, start_pfn); in __remove_section()
535 sparse_remove_one_section(zone, ms, map_offset, altmap); in __remove_section()
551 int __remove_pages(struct zone *zone, unsigned long phys_start_pfn, in __remove_pages() argument
559 if (is_dev_zone(zone)) { in __remove_pages()
578 clear_zone_contiguous(zone); in __remove_pages()
590 ret = __remove_section(zone, __pfn_to_section(pfn), map_offset, in __remove_pages()
597 set_zone_contiguous(zone); in __remove_pages()
687 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_online() argument
689 int nid = zone_to_nid(zone); in node_states_check_changes_online()
710 if (zone_idx(zone) <= zone_last && !node_state(nid, N_NORMAL_MEMORY)) in node_states_check_changes_online()
729 if (zone_idx(zone) <= zone_last && !node_state(nid, N_HIGH_MEMORY)) in node_states_check_changes_online()
759 static void __meminit resize_zone_range(struct zone *zone, unsigned long start_pfn, in resize_zone_range() argument
762 unsigned long old_end_pfn = zone_end_pfn(zone); in resize_zone_range()
764 if (zone_is_empty(zone) || start_pfn < zone->zone_start_pfn) in resize_zone_range()
765 zone->zone_start_pfn = start_pfn; in resize_zone_range()
767 zone->spanned_pages = max(start_pfn + nr_pages, old_end_pfn) - zone->zone_start_pfn; in resize_zone_range()
781 void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, in move_pfn_range_to_zone() argument
784 struct pglist_data *pgdat = zone->zone_pgdat; in move_pfn_range_to_zone()
788 if (zone_is_empty(zone)) in move_pfn_range_to_zone()
789 init_currently_empty_zone(zone, start_pfn, nr_pages); in move_pfn_range_to_zone()
791 clear_zone_contiguous(zone); in move_pfn_range_to_zone()
795 zone_span_writelock(zone); in move_pfn_range_to_zone()
796 resize_zone_range(zone, start_pfn, nr_pages); in move_pfn_range_to_zone()
797 zone_span_writeunlock(zone); in move_pfn_range_to_zone()
807 memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, in move_pfn_range_to_zone()
810 set_zone_contiguous(zone); in move_pfn_range_to_zone()
818 static struct zone *default_kernel_zone_for_pfn(int nid, unsigned long start_pfn, in default_kernel_zone_for_pfn()
825 struct zone *zone = &pgdat->node_zones[zid]; in default_kernel_zone_for_pfn() local
827 if (zone_intersects(zone, start_pfn, nr_pages)) in default_kernel_zone_for_pfn()
828 return zone; in default_kernel_zone_for_pfn()
834 static inline struct zone *default_zone_for_pfn(int nid, unsigned long start_pfn, in default_zone_for_pfn()
837 struct zone *kernel_zone = default_kernel_zone_for_pfn(nid, start_pfn, in default_zone_for_pfn()
839 struct zone *movable_zone = &NODE_DATA(nid)->node_zones[ZONE_MOVABLE]; in default_zone_for_pfn()
858 struct zone * zone_for_pfn_range(int online_type, int nid, unsigned start_pfn, in zone_for_pfn_range()
874 static struct zone * __meminit move_pfn_range(int online_type, int nid, in move_pfn_range()
877 struct zone *zone; in move_pfn_range() local
879 zone = zone_for_pfn_range(online_type, nid, start_pfn, nr_pages); in move_pfn_range()
880 move_pfn_range_to_zone(zone, start_pfn, nr_pages, NULL); in move_pfn_range()
881 return zone; in move_pfn_range()
889 struct zone *zone; in online_pages() local
904 zone = move_pfn_range(online_type, nid, pfn, nr_pages); in online_pages()
908 node_states_check_changes_online(nr_pages, zone, &arg); in online_pages()
920 if (!populated_zone(zone)) { in online_pages()
922 setup_zone_pageset(zone); in online_pages()
929 zone_pcp_reset(zone); in online_pages()
933 zone->present_pages += onlined_pages; in online_pages()
935 pgdat_resize_lock(zone->zone_pgdat, &flags); in online_pages()
936 zone->zone_pgdat->node_present_pages += onlined_pages; in online_pages()
937 pgdat_resize_unlock(zone->zone_pgdat, &flags); in online_pages()
944 zone_pcp_update(zone); in online_pages()
973 struct zone *z; in reset_node_present_pages()
1234 struct zone *zone; in is_pageblock_removable_nolock() local
1247 zone = page_zone(page); in is_pageblock_removable_nolock()
1249 if (!zone_spans_pfn(zone, pfn)) in is_pageblock_removable_nolock()
1252 return !has_unmovable_pages(zone, page, 0, MIGRATE_MOVABLE, true); in is_pageblock_removable_nolock()
1281 struct zone *zone = NULL; in test_pages_in_a_zone() local
1300 if (zone && page_zone(page) != zone) in test_pages_in_a_zone()
1302 if (!zone) in test_pages_in_a_zone()
1304 zone = page_zone(page); in test_pages_in_a_zone()
1309 if (zone) { in test_pages_in_a_zone()
1504 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_offline() argument
1506 struct pglist_data *pgdat = zone->zone_pgdat; in node_states_check_changes_offline()
1531 if (zone_idx(zone) <= zone_last && nr_pages >= present_pages) in node_states_check_changes_offline()
1532 arg->status_change_nid_normal = zone_to_nid(zone); in node_states_check_changes_offline()
1552 if (zone_idx(zone) <= zone_last && nr_pages >= present_pages) in node_states_check_changes_offline()
1553 arg->status_change_nid_high = zone_to_nid(zone); in node_states_check_changes_offline()
1574 arg->status_change_nid = zone_to_nid(zone); in node_states_check_changes_offline()
1601 struct zone *zone; in __offline_pages() local
1614 zone = page_zone(pfn_to_page(valid_start)); in __offline_pages()
1615 node = zone_to_nid(zone); in __offline_pages()
1626 node_states_check_changes_offline(nr_pages, zone, &arg); in __offline_pages()
1642 drain_all_pages(zone); in __offline_pages()
1669 zone->present_pages -= offlined_pages; in __offline_pages()
1671 pgdat_resize_lock(zone->zone_pgdat, &flags); in __offline_pages()
1672 zone->zone_pgdat->node_present_pages -= offlined_pages; in __offline_pages()
1673 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __offline_pages()
1677 if (!populated_zone(zone)) { in __offline_pages()
1678 zone_pcp_reset(zone); in __offline_pages()
1681 zone_pcp_update(zone); in __offline_pages()