• Home
  • Raw
  • Download

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 void __ref remove_pfn_range_from_zone(struct zone *zone, in remove_pfn_range_from_zone() argument
472 struct pglist_data *pgdat = zone->zone_pgdat; in remove_pfn_range_from_zone()
481 if (zone_idx(zone) == ZONE_DEVICE) in remove_pfn_range_from_zone()
485 clear_zone_contiguous(zone); in remove_pfn_range_from_zone()
487 pgdat_resize_lock(zone->zone_pgdat, &flags); in remove_pfn_range_from_zone()
488 shrink_zone_span(zone, start_pfn, start_pfn + nr_pages); in remove_pfn_range_from_zone()
490 pgdat_resize_unlock(zone->zone_pgdat, &flags); in remove_pfn_range_from_zone()
492 set_zone_contiguous(zone); in remove_pfn_range_from_zone()
639 struct zone *zone, struct memory_notify *arg) in node_states_check_changes_online() argument
641 int nid = zone_to_nid(zone); in node_states_check_changes_online()
649 if (zone_idx(zone) <= ZONE_NORMAL && !node_state(nid, N_NORMAL_MEMORY)) in node_states_check_changes_online()
652 if (zone_idx(zone) <= ZONE_HIGHMEM && !node_state(nid, N_HIGH_MEMORY)) in node_states_check_changes_online()
669 static void __meminit resize_zone_range(struct zone *zone, unsigned long start_pfn, in resize_zone_range() argument
672 unsigned long old_end_pfn = zone_end_pfn(zone); in resize_zone_range()
674 if (zone_is_empty(zone) || start_pfn < zone->zone_start_pfn) in resize_zone_range()
675 zone->zone_start_pfn = start_pfn; in resize_zone_range()
677 zone->spanned_pages = max(start_pfn + nr_pages, old_end_pfn) - zone->zone_start_pfn; in resize_zone_range()
696 void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, in move_pfn_range_to_zone() argument
699 struct pglist_data *pgdat = zone->zone_pgdat; in move_pfn_range_to_zone()
703 clear_zone_contiguous(zone); in move_pfn_range_to_zone()
707 zone_span_writelock(zone); in move_pfn_range_to_zone()
708 if (zone_is_empty(zone)) in move_pfn_range_to_zone()
709 init_currently_empty_zone(zone, start_pfn, nr_pages); in move_pfn_range_to_zone()
710 resize_zone_range(zone, start_pfn, nr_pages); in move_pfn_range_to_zone()
711 zone_span_writeunlock(zone); in move_pfn_range_to_zone()
721 memmap_init_zone(nr_pages, nid, zone_idx(zone), start_pfn, in move_pfn_range_to_zone()
724 set_zone_contiguous(zone); in move_pfn_range_to_zone()
732 static struct zone *default_kernel_zone_for_pfn(int nid, unsigned long start_pfn, in default_kernel_zone_for_pfn()
739 struct zone *zone = &pgdat->node_zones[zid]; in default_kernel_zone_for_pfn() local
741 if (zone_intersects(zone, start_pfn, nr_pages)) in default_kernel_zone_for_pfn()
742 return zone; in default_kernel_zone_for_pfn()
748 static inline struct zone *default_zone_for_pfn(int nid, unsigned long start_pfn, in default_zone_for_pfn()
751 struct zone *kernel_zone = default_kernel_zone_for_pfn(nid, start_pfn, in default_zone_for_pfn()
753 struct zone *movable_zone = &NODE_DATA(nid)->node_zones[ZONE_MOVABLE]; in default_zone_for_pfn()
772 struct zone * zone_for_pfn_range(int online_type, int nid, unsigned start_pfn, in zone_for_pfn_range()
788 struct zone *zone; in online_pages() local
806 zone = zone_for_pfn_range(online_type, nid, pfn, nr_pages); in online_pages()
807 move_pfn_range_to_zone(zone, pfn, nr_pages, NULL); in online_pages()
811 node_states_check_changes_online(nr_pages, zone, &arg); in online_pages()
823 if (!populated_zone(zone)) { in online_pages()
825 setup_zone_pageset(zone); in online_pages()
833 zone_pcp_reset(zone); in online_pages()
837 zone->present_pages += onlined_pages; in online_pages()
839 pgdat_resize_lock(zone->zone_pgdat, &flags); in online_pages()
840 zone->zone_pgdat->node_present_pages += onlined_pages; in online_pages()
841 pgdat_resize_unlock(zone->zone_pgdat, &flags); in online_pages()
843 shuffle_zone(zone); in online_pages()
849 zone_pcp_update(zone); in online_pages()
869 remove_pfn_range_from_zone(zone, pfn, nr_pages); 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()
1605 remove_pfn_range_from_zone(zone, start_pfn, nr_pages); in __offline_pages()