Lines Matching full:order

44  * Use it to store both the magic and the order.
49 unsigned int order; member
73 * The serializing side uses two levels of xarrays to manage chunks of per-order
74 * PAGE_SIZE byte bitmaps. For instance if PAGE_SIZE = 4096, the entire 1G order
75 * of a 8TB system would fit inside a single 4096 byte bitmap. For order 0
77 * memory at most 512K of bitmap memory will be needed for order 0.
96 * to order.
102 /* Points to kho_mem_phys, each order gets its own bitmap tree */
150 unsigned int order) in __kho_unpreserve_order() argument
154 const unsigned long pfn_high = pfn >> order; in __kho_unpreserve_order()
156 physxa = xa_load(&track->orders, order); in __kho_unpreserve_order()
170 unsigned int order; in __kho_unpreserve() local
173 order = min(count_trailing_zeros(pfn), ilog2(end_pfn - pfn)); in __kho_unpreserve()
175 __kho_unpreserve_order(track, pfn, order); in __kho_unpreserve()
177 pfn += 1 << order; in __kho_unpreserve()
182 unsigned int order) in __kho_preserve_order() argument
186 const unsigned long pfn_high = pfn >> order; in __kho_preserve_order()
189 physxa = xa_load(&track->orders, order); in __kho_preserve_order()
198 physxa = xa_cmpxchg(&track->orders, order, NULL, new_physxa, in __kho_preserve_order()
234 * check also implicitly makes sure phys is order-aligned since for in kho_restore_page()
235 * non-order-aligned phys addresses, magic will never be set. in kho_restore_page()
237 if (WARN_ON_ONCE(info.magic != KHO_PAGE_MAGIC || info.order > MAX_PAGE_ORDER)) in kho_restore_page()
239 nr_pages = (1 << info.order); in kho_restore_page()
247 * For higher order folios, tail pages get a page count of zero. in kho_restore_page()
248 * For physically contiguous order-0 pages every pages gets a page in kho_restore_page()
255 if (is_folio && info.order) in kho_restore_page()
256 prep_compound_page(page, info.order); in kho_restore_page()
277 * kho_restore_pages - restore list of contiguous order 0 pages.
281 * Restore a contiguous list of order 0 pages that was preserved with
293 const unsigned int order = in kho_restore_pages() local
299 pfn += 1 << order; in kho_restore_pages()
309 * process. Each chunk holds bitmaps of the same order and each block of bitmaps
312 * but the KHO successor kernel only needs to process them once in order.
327 unsigned int order; member
343 unsigned long order) in new_chunk() argument
354 chunk->hdr.order = order; in new_chunk()
398 unsigned long order; in kho_mem_serialize() local
401 xa_for_each(&kho_out->track.orders, order, physxa) { in kho_mem_serialize()
405 chunk = new_chunk(chunk, order); in kho_mem_serialize()
418 chunk = new_chunk(chunk, order); in kho_mem_serialize()
428 << (order + PAGE_SHIFT); in kho_mem_serialize()
442 static void __init deserialize_bitmap(unsigned int order, in deserialize_bitmap() argument
449 int sz = 1 << (order + PAGE_SHIFT); in deserialize_bitmap()
451 elm->phys_start + (bit << (order + PAGE_SHIFT)); in deserialize_bitmap()
458 info.order = order; in deserialize_bitmap()
488 deserialize_bitmap(chunk->hdr.order, in kho_mem_deserialize()
786 * Instructs KHO to preserve the whole folio across kexec. The order
794 const unsigned int order = folio_order(folio); in kho_preserve_folio() local
797 if (WARN_ON(kho_scratch_overlap(pfn << PAGE_SHIFT, PAGE_SIZE << order))) in kho_preserve_folio()
800 return __kho_preserve_order(track, pfn, order); in kho_preserve_folio()
809 * kho_preserve_folio() before. The provided @folio (pfn and order)
815 const unsigned int order = folio_order(folio); in kho_unpreserve_folio() local
818 __kho_unpreserve_order(track, pfn, order); in kho_unpreserve_folio()
827 * Preserve a contiguous list of order 0 pages. Must be restored using
828 * kho_restore_pages() to ensure the pages are restored properly as order 0.
847 const unsigned int order = in kho_preserve_pages() local
850 err = __kho_preserve_order(track, pfn, order); in kho_preserve_pages()
856 pfn += 1 << order; in kho_preserve_pages()
954 unsigned short order) in kho_vmalloc_unpreserve_chunk() argument
963 __kho_unpreserve(track, pfn, pfn + (1 << order)); in kho_vmalloc_unpreserve_chunk()
986 unsigned int order, flags, nr_contig_pages; in kho_preserve_vmalloc() local
997 order = get_vm_area_page_order(vm); in kho_preserve_vmalloc()
1004 nr_contig_pages = (1 << order); in kho_preserve_vmalloc()
1023 preservation->order = order; in kho_preserve_vmalloc()
1047 kho_vmalloc_unpreserve_chunk(chunk, preservation->order); in kho_unpreserve_vmalloc()
1068 unsigned int align, order, shift, vm_flags; in kho_restore_vmalloc() local
1084 order = preservation->order; in kho_restore_vmalloc()
1085 contig_pages = (1 << order); in kho_restore_vmalloc()
1086 shift = PAGE_SHIFT + order; in kho_restore_vmalloc()
1161 int order, ret; in kho_alloc_preserve() local
1166 order = get_order(size); in kho_alloc_preserve()
1167 if (order > MAX_PAGE_ORDER) in kho_alloc_preserve()
1170 folio = folio_alloc(GFP_KERNEL | __GFP_ZERO, order); in kho_alloc_preserve()