• Home
  • Raw
  • Download

Lines Matching refs:zone

250 	struct zone *zone;  in register_page_bootmem_info_node()  local
258 zone = &pgdat->node_zones[0]; in register_page_bootmem_info_node()
259 for (; zone < pgdat->node_zones + MAX_NR_ZONES - 1; zone++) { in register_page_bootmem_info_node()
260 if (zone_is_initialized(zone)) { in register_page_bootmem_info_node()
261 nr_pages = zone->wait_table_hash_nr_entries in register_page_bootmem_info_node()
264 page = virt_to_page(zone->wait_table); in register_page_bootmem_info_node()
288 static void __meminit grow_zone_span(struct zone *zone, unsigned long start_pfn, in grow_zone_span() argument
293 zone_span_writelock(zone); in grow_zone_span()
295 old_zone_end_pfn = zone_end_pfn(zone); in grow_zone_span()
296 if (zone_is_empty(zone) || start_pfn < zone->zone_start_pfn) in grow_zone_span()
297 zone->zone_start_pfn = start_pfn; in grow_zone_span()
299 zone->spanned_pages = max(old_zone_end_pfn, end_pfn) - in grow_zone_span()
300 zone->zone_start_pfn; in grow_zone_span()
302 zone_span_writeunlock(zone); in grow_zone_span()
305 static void resize_zone(struct zone *zone, unsigned long start_pfn, in resize_zone() argument
308 zone_span_writelock(zone); in resize_zone()
311 zone->zone_start_pfn = start_pfn; in resize_zone()
312 zone->spanned_pages = end_pfn - start_pfn; in resize_zone()
318 zone->zone_start_pfn = 0; in resize_zone()
319 zone->spanned_pages = 0; in resize_zone()
322 zone_span_writeunlock(zone); in resize_zone()
325 static void fix_zone_id(struct zone *zone, unsigned long start_pfn, in fix_zone_id() argument
328 enum zone_type zid = zone_idx(zone); in fix_zone_id()
329 int nid = zone->zone_pgdat->node_id; in fix_zone_id()
338 static int __ref ensure_zone_is_initialized(struct zone *zone, in ensure_zone_is_initialized() argument
341 if (!zone_is_initialized(zone)) in ensure_zone_is_initialized()
342 return init_currently_empty_zone(zone, start_pfn, num_pages, in ensure_zone_is_initialized()
347 static int __meminit move_pfn_range_left(struct zone *z1, struct zone *z2, in move_pfn_range_left()
389 static int __meminit move_pfn_range_right(struct zone *z1, struct zone *z2, in move_pfn_range_right()
443 static int __meminit __add_zone(struct zone *zone, unsigned long phys_start_pfn) in __add_zone() argument
445 struct pglist_data *pgdat = zone->zone_pgdat; in __add_zone()
452 zone_type = zone - pgdat->node_zones; in __add_zone()
453 ret = ensure_zone_is_initialized(zone, phys_start_pfn, nr_pages); in __add_zone()
457 pgdat_resize_lock(zone->zone_pgdat, &flags); in __add_zone()
458 grow_zone_span(zone, phys_start_pfn, phys_start_pfn + nr_pages); in __add_zone()
459 grow_pgdat_span(zone->zone_pgdat, phys_start_pfn, in __add_zone()
461 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __add_zone()
467 static int __meminit __add_section(int nid, struct zone *zone, in __add_section() argument
475 ret = sparse_add_one_section(zone, phys_start_pfn); in __add_section()
480 ret = __add_zone(zone, phys_start_pfn); in __add_section()
494 int __ref __add_pages(int nid, struct zone *zone, unsigned long phys_start_pfn, in __add_pages() argument
505 err = __add_section(nid, zone, i << PFN_SECTION_SHIFT); in __add_pages()
523 static int find_smallest_section_pfn(int nid, struct zone *zone, in find_smallest_section_pfn() argument
538 if (zone && zone != page_zone(pfn_to_page(start_pfn))) in find_smallest_section_pfn()
548 static int find_biggest_section_pfn(int nid, struct zone *zone, in find_biggest_section_pfn() argument
566 if (zone && zone != page_zone(pfn_to_page(pfn))) in find_biggest_section_pfn()
575 static void shrink_zone_span(struct zone *zone, unsigned long start_pfn, in shrink_zone_span() argument
578 unsigned long zone_start_pfn = zone->zone_start_pfn; in shrink_zone_span()
579 unsigned long z = zone_end_pfn(zone); /* zone_end_pfn namespace clash */ in shrink_zone_span()
583 int nid = zone_to_nid(zone); in shrink_zone_span()
585 zone_span_writelock(zone); in shrink_zone_span()
593 pfn = find_smallest_section_pfn(nid, zone, end_pfn, in shrink_zone_span()
596 zone->zone_start_pfn = pfn; in shrink_zone_span()
597 zone->spanned_pages = zone_end_pfn - pfn; in shrink_zone_span()
606 pfn = find_biggest_section_pfn(nid, zone, zone_start_pfn, in shrink_zone_span()
609 zone->spanned_pages = pfn - zone_start_pfn + 1; in shrink_zone_span()
625 if (page_zone(pfn_to_page(pfn)) != zone) in shrink_zone_span()
633 zone_span_writeunlock(zone); in shrink_zone_span()
638 zone->zone_start_pfn = 0; in shrink_zone_span()
639 zone->spanned_pages = 0; in shrink_zone_span()
640 zone_span_writeunlock(zone); in shrink_zone_span()
709 static void __remove_zone(struct zone *zone, unsigned long start_pfn) in __remove_zone() argument
711 struct pglist_data *pgdat = zone->zone_pgdat; in __remove_zone()
716 zone_type = zone - pgdat->node_zones; in __remove_zone()
718 pgdat_resize_lock(zone->zone_pgdat, &flags); in __remove_zone()
719 shrink_zone_span(zone, start_pfn, start_pfn + nr_pages); in __remove_zone()
721 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __remove_zone()
724 static int __remove_section(struct zone *zone, struct mem_section *ms) in __remove_section() argument
739 __remove_zone(zone, start_pfn); in __remove_section()
741 sparse_remove_one_section(zone, ms); in __remove_section()
756 int __remove_pages(struct zone *zone, unsigned long phys_start_pfn, in __remove_pages() argument
783 ret = __remove_section(zone, __pfn_to_section(pfn)); in __remove_pages()
875 static bool can_online_high_movable(struct zone *zone) in can_online_high_movable() argument
881 static bool can_online_high_movable(struct zone *zone) in can_online_high_movable() argument
883 return node_state(zone_to_nid(zone), N_NORMAL_MEMORY); in can_online_high_movable()
889 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_online() argument
891 int nid = zone_to_nid(zone); in node_states_check_changes_online()
912 if (zone_idx(zone) <= zone_last && !node_state(nid, N_NORMAL_MEMORY)) in node_states_check_changes_online()
931 if (zone_idx(zone) <= zone_last && !node_state(nid, N_HIGH_MEMORY)) in node_states_check_changes_online()
966 struct zone *zone; in online_pages() local
978 zone = page_zone(pfn_to_page(pfn)); in online_pages()
981 if ((zone_idx(zone) > ZONE_NORMAL || in online_pages()
983 !can_online_high_movable(zone)) in online_pages()
987 zone_idx(zone) == ZONE_MOVABLE) { in online_pages()
988 if (move_pfn_range_left(zone - 1, zone, pfn, pfn + nr_pages)) in online_pages()
992 zone_idx(zone) == ZONE_MOVABLE - 1) { in online_pages()
993 if (move_pfn_range_right(zone, zone + 1, pfn, pfn + nr_pages)) in online_pages()
998 zone = page_zone(pfn_to_page(pfn)); in online_pages()
1002 node_states_check_changes_online(nr_pages, zone, &arg); in online_pages()
1018 if (!populated_zone(zone)) { in online_pages()
1020 build_all_zonelists(NULL, zone); in online_pages()
1027 zone_pcp_reset(zone); in online_pages()
1037 zone->present_pages += onlined_pages; in online_pages()
1039 pgdat_resize_lock(zone->zone_pgdat, &flags); in online_pages()
1040 zone->zone_pgdat->node_present_pages += onlined_pages; in online_pages()
1041 pgdat_resize_unlock(zone->zone_pgdat, &flags); in online_pages()
1044 node_states_set_node(zone_to_nid(zone), &arg); in online_pages()
1048 zone_pcp_update(zone); in online_pages()
1056 kswapd_run(zone_to_nid(zone)); in online_pages()
1072 struct zone *z; in reset_node_present_pages()
1164 if (pgdat->node_zonelists->_zonerefs->zone == NULL) { in try_online_node()
1201 struct zone *movable_zone = pgdat->node_zones + ZONE_MOVABLE; in should_add_memory_movable()
1343 struct zone *zone = NULL; in test_pages_in_a_zone() local
1356 if (zone && page_zone(page) != zone) in test_pages_in_a_zone()
1358 zone = page_zone(page); in test_pages_in_a_zone()
1519 static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) in can_offline_normal() argument
1525 static bool can_offline_normal(struct zone *zone, unsigned long nr_pages) in can_offline_normal() argument
1527 struct pglist_data *pgdat = zone->zone_pgdat; in can_offline_normal()
1582 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_offline() argument
1584 struct pglist_data *pgdat = zone->zone_pgdat; in node_states_check_changes_offline()
1609 if (zone_idx(zone) <= zone_last && nr_pages >= present_pages) in node_states_check_changes_offline()
1610 arg->status_change_nid_normal = zone_to_nid(zone); in node_states_check_changes_offline()
1630 if (zone_idx(zone) <= zone_last && nr_pages >= present_pages) in node_states_check_changes_offline()
1631 arg->status_change_nid_high = zone_to_nid(zone); in node_states_check_changes_offline()
1652 arg->status_change_nid = zone_to_nid(zone); in node_states_check_changes_offline()
1678 struct zone *zone; in __offline_pages() local
1693 zone = page_zone(pfn_to_page(start_pfn)); in __offline_pages()
1694 node = zone_to_nid(zone); in __offline_pages()
1698 if (zone_idx(zone) <= ZONE_NORMAL && !can_offline_normal(zone, nr_pages)) in __offline_pages()
1709 node_states_check_changes_offline(nr_pages, zone, &arg); in __offline_pages()
1774 zone->present_pages -= offlined_pages; in __offline_pages()
1776 pgdat_resize_lock(zone->zone_pgdat, &flags); in __offline_pages()
1777 zone->zone_pgdat->node_present_pages -= offlined_pages; in __offline_pages()
1778 pgdat_resize_unlock(zone->zone_pgdat, &flags); in __offline_pages()
1782 if (!populated_zone(zone)) { in __offline_pages()
1783 zone_pcp_reset(zone); in __offline_pages()
1788 zone_pcp_update(zone); in __offline_pages()
1975 struct zone *zone = pgdat->node_zones + i; in try_offline_node() local
1981 if (is_vmalloc_addr(zone->wait_table)) { in try_offline_node()
1982 vfree(zone->wait_table); in try_offline_node()
1983 zone->wait_table = NULL; in try_offline_node()