Lines Matching refs:pfn

319 static int check_pfn_span(unsigned long pfn, unsigned long nr_pages)  in check_pfn_span()  argument
336 if (!IS_ALIGNED(pfn | nr_pages, min_align)) in check_pfn_span()
346 struct page *pfn_to_online_page(unsigned long pfn) in pfn_to_online_page() argument
348 unsigned long nr = pfn_to_section_nr(pfn); in pfn_to_online_page()
363 if (IS_ENABLED(CONFIG_HAVE_ARCH_PFN_VALID) && !pfn_valid(pfn)) in pfn_to_online_page()
366 if (!pfn_section_valid(ms, pfn)) in pfn_to_online_page()
370 return pfn_to_page(pfn); in pfn_to_online_page()
378 pgmap = get_dev_pagemap(pfn, NULL); in pfn_to_online_page()
385 return pfn_to_page(pfn); in pfn_to_online_page()
389 int __add_pages(int nid, unsigned long pfn, unsigned long nr_pages, in __add_pages() argument
392 const unsigned long end_pfn = pfn + nr_pages; in __add_pages()
400 VM_BUG_ON(!mhp_range_allowed(PFN_PHYS(pfn), nr_pages * PAGE_SIZE, false)); in __add_pages()
406 if (altmap->base_pfn != pfn in __add_pages()
414 if (check_pfn_span(pfn, nr_pages)) { in __add_pages()
415 WARN(1, "Misaligned %s start: %#lx end: %#lx\n", __func__, pfn, pfn + nr_pages - 1); in __add_pages()
419 for (; pfn < end_pfn; pfn += cur_nr_pages) { in __add_pages()
421 cur_nr_pages = min(end_pfn - pfn, in __add_pages()
422 SECTION_ALIGN_UP(pfn + 1) - pfn); in __add_pages()
423 err = sparse_add_section(nid, pfn, cur_nr_pages, altmap, in __add_pages()
459 unsigned long pfn; in find_biggest_section_pfn() local
462 pfn = end_pfn - 1; in find_biggest_section_pfn()
463 for (; pfn >= start_pfn; pfn -= PAGES_PER_SUBSECTION) { in find_biggest_section_pfn()
464 if (unlikely(!pfn_to_online_page(pfn))) in find_biggest_section_pfn()
467 if (unlikely(pfn_to_nid(pfn) != nid)) in find_biggest_section_pfn()
470 if (zone != page_zone(pfn_to_page(pfn))) in find_biggest_section_pfn()
473 return pfn; in find_biggest_section_pfn()
482 unsigned long pfn; in shrink_zone_span() local
492 pfn = find_smallest_section_pfn(nid, zone, end_pfn, in shrink_zone_span()
494 if (pfn) { in shrink_zone_span()
495 zone->spanned_pages = zone_end_pfn(zone) - pfn; in shrink_zone_span()
496 zone->zone_start_pfn = pfn; in shrink_zone_span()
508 pfn = find_biggest_section_pfn(nid, zone, zone->zone_start_pfn, in shrink_zone_span()
510 if (pfn) in shrink_zone_span()
511 zone->spanned_pages = pfn - zone->zone_start_pfn + 1; in shrink_zone_span()
553 unsigned long pfn, cur_nr_pages; in remove_pfn_range_from_zone() local
556 for (pfn = start_pfn; pfn < end_pfn; pfn += cur_nr_pages) { in remove_pfn_range_from_zone()
561 min(end_pfn - pfn, SECTION_ALIGN_UP(pfn + 1) - pfn); in remove_pfn_range_from_zone()
562 page_init_poison(pfn_to_page(pfn), in remove_pfn_range_from_zone()
593 void __remove_pages(unsigned long pfn, unsigned long nr_pages, in __remove_pages() argument
596 const unsigned long end_pfn = pfn + nr_pages; in __remove_pages()
599 if (check_pfn_span(pfn, nr_pages)) { in __remove_pages()
600 WARN(1, "Misaligned %s start: %#lx end: %#lx\n", __func__, pfn, pfn + nr_pages - 1); in __remove_pages()
604 for (; pfn < end_pfn; pfn += cur_nr_pages) { in __remove_pages()
607 cur_nr_pages = min(end_pfn - pfn, in __remove_pages()
608 SECTION_ALIGN_UP(pfn + 1) - pfn); in __remove_pages()
609 sparse_remove_section(pfn, cur_nr_pages, altmap); in __remove_pages()
661 unsigned long pfn; in online_pages_range() local
672 for (pfn = start_pfn; pfn < end_pfn;) { in online_pages_range()
673 struct page *page = pfn_to_page(pfn); in online_pages_range()
683 if (pfn) in online_pages_range()
684 order = min_t(int, MAX_PAGE_ORDER, __ffs(pfn)); in online_pages_range()
696 pfn += (1UL << order); in online_pages_range()
727 static void section_taint_zone_device(unsigned long pfn) in section_taint_zone_device() argument
729 struct mem_section *ms = __pfn_to_section(pfn); in section_taint_zone_device()
734 static inline void section_taint_zone_device(unsigned long pfn) in section_taint_zone_device() argument
966 unsigned long pfn, in auto_movable_zone_for_pfn() argument
992 pfn = ALIGN_DOWN(pfn, group->d.unit_pages); in auto_movable_zone_for_pfn()
993 end_pfn = pfn + group->d.unit_pages; in auto_movable_zone_for_pfn()
994 for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) { in auto_movable_zone_for_pfn()
995 page = pfn_to_online_page(pfn); in auto_movable_zone_for_pfn()
1022 return default_kernel_zone_for_pfn(nid, pfn, nr_pages); in auto_movable_zone_for_pfn()
1090 int mhp_init_memmap_on_memory(unsigned long pfn, unsigned long nr_pages, in mhp_init_memmap_on_memory() argument
1093 unsigned long end_pfn = pfn + nr_pages; in mhp_init_memmap_on_memory()
1096 ret = kasan_add_zero_shadow(__va(PFN_PHYS(pfn)), PFN_PHYS(nr_pages)); in mhp_init_memmap_on_memory()
1107 page_init_poison(pfn_to_page(pfn), sizeof(struct page) * nr_pages); in mhp_init_memmap_on_memory()
1109 move_pfn_range_to_zone(zone, pfn, nr_pages, NULL, MIGRATE_UNMOVABLE, in mhp_init_memmap_on_memory()
1113 struct page *page = pfn_to_page(pfn + i); in mhp_init_memmap_on_memory()
1125 online_mem_sections(pfn, ALIGN_DOWN(end_pfn, PAGES_PER_SECTION)); in mhp_init_memmap_on_memory()
1130 void mhp_deinit_memmap_on_memory(unsigned long pfn, unsigned long nr_pages) in mhp_deinit_memmap_on_memory() argument
1132 unsigned long end_pfn = pfn + nr_pages; in mhp_deinit_memmap_on_memory()
1140 offline_mem_sections(pfn, ALIGN_DOWN(end_pfn, PAGES_PER_SECTION)); in mhp_deinit_memmap_on_memory()
1146 remove_pfn_range_from_zone(page_zone(pfn_to_page(pfn)), pfn, nr_pages); in mhp_deinit_memmap_on_memory()
1147 kasan_remove_zero_shadow(__va(PFN_PHYS(pfn)), PFN_PHYS(nr_pages)); in mhp_deinit_memmap_on_memory()
1153 int online_pages(unsigned long pfn, unsigned long nr_pages, in online_pages() argument
1157 .start_pfn = pfn, in online_pages()
1175 if (WARN_ON_ONCE(!nr_pages || !pageblock_aligned(pfn) || in online_pages()
1176 !IS_ALIGNED(pfn + nr_pages, PAGES_PER_SECTION))) in online_pages()
1181 move_pfn_range_to_zone(zone, pfn, nr_pages, NULL, MIGRATE_MOVABLE, in online_pages()
1216 online_pages_range(pfn, nr_pages); in online_pages()
1217 adjust_present_page_count(pfn_to_page(pfn), group, nr_pages); in online_pages()
1225 undo_isolate_page_range(pfn, pfn + nr_pages); in online_pages()
1252 (unsigned long long) pfn << PAGE_SHIFT, in online_pages()
1253 (((unsigned long long) pfn + nr_pages) << PAGE_SHIFT) - 1); in online_pages()
1257 remove_pfn_range_from_zone(zone, pfn, nr_pages); in online_pages()
1755 unsigned long pfn; in scan_movable_pages() local
1757 for_each_valid_pfn(pfn, start, end) { in scan_movable_pages()
1761 page = pfn_to_page(pfn); in scan_movable_pages()
1786 pfn |= folio_nr_pages(folio) - 1; in scan_movable_pages()
1790 *movable_pfn = pfn; in scan_movable_pages()
1797 unsigned long pfn; in do_migrate_range() local
1802 for_each_valid_pfn(pfn, start_pfn, end_pfn) { in do_migrate_range()
1805 page = pfn_to_page(pfn); in do_migrate_range()
1815 pfn = folio_pfn(folio) + folio_nr_pages(folio) - 1; in do_migrate_range()
1822 unmap_poisoned_folio(folio, pfn, false); in do_migrate_range()
1900 unsigned long pfn, managed_pages, system_ram_pages = 0; in offline_pages() local
1992 pfn = start_pfn; in offline_pages()
2007 ret = scan_movable_pages(pfn, end_pfn, &pfn); in offline_pages()
2013 do_migrate_range(pfn, end_pfn); in offline_pages()