Lines Matching full:region

143 		 * memmap=nn@ss specifies usable region, should  in parse_memmap()
152 * system can use. Region above the limit should be avoided. in parse_memmap()
362 * Avoid the region that is unsafe to overlap during in mem_avoid_init()
401 * overlap region with the lowest address.
463 static void store_slot_info(struct mem_vector *region, unsigned long image_size) in store_slot_info() argument
470 slot_area.addr = region->start; in store_slot_info()
471 slot_area.num = 1 + (region->size - image_size) / CONFIG_PHYSICAL_ALIGN; in store_slot_info()
478 * Skip as many 1GB huge pages as possible in the passed region
482 process_gb_huge_pages(struct mem_vector *region, unsigned long image_size) in process_gb_huge_pages() argument
489 store_slot_info(region, image_size); in process_gb_huge_pages()
493 /* Are there any 1GB pages in the region? */ in process_gb_huge_pages()
494 pud_start = ALIGN(region->start, PUD_SIZE); in process_gb_huge_pages()
495 pud_end = ALIGN_DOWN(region->start + region->size, PUD_SIZE); in process_gb_huge_pages()
499 store_slot_info(region, image_size); in process_gb_huge_pages()
503 /* Check if the head part of the region is usable. */ in process_gb_huge_pages()
504 if (pud_start >= region->start + image_size) { in process_gb_huge_pages()
505 tmp.start = region->start; in process_gb_huge_pages()
506 tmp.size = pud_start - region->start; in process_gb_huge_pages()
519 /* Check if the tail part of the region is usable. */ in process_gb_huge_pages()
520 if (region->start + region->size >= pud_end + image_size) { in process_gb_huge_pages()
522 tmp.size = region->start + region->size - pud_end; in process_gb_huge_pages()
555 struct mem_vector region, overlap; in __process_mem_region() local
559 region.start = max_t(u64, entry->start, minimum); in __process_mem_region()
565 region.start = ALIGN(region.start, CONFIG_PHYSICAL_ALIGN); in __process_mem_region()
568 if (region.start > region_end) in __process_mem_region()
572 region.size = region_end - region.start; in __process_mem_region()
574 /* Return if region can't contain decompressed kernel */ in __process_mem_region()
575 if (region.size < image_size) in __process_mem_region()
578 /* If nothing overlaps, store the region and return. */ in __process_mem_region()
579 if (!mem_avoid_overlap(&region, &overlap)) { in __process_mem_region()
580 process_gb_huge_pages(&region, image_size); in __process_mem_region()
584 /* Store beginning of region if holds at least image_size. */ in __process_mem_region()
585 if (overlap.start >= region.start + image_size) { in __process_mem_region()
586 region.size = overlap.start - region.start; in __process_mem_region()
587 process_gb_huge_pages(&region, image_size); in __process_mem_region()
590 /* Clip off the overlapping region and start over. */ in __process_mem_region()
591 region.start = overlap.start + overlap.size; in __process_mem_region()
595 static bool process_mem_region(struct mem_vector *region, in process_mem_region() argument
602 * use @region directly. in process_mem_region()
605 __process_mem_region(region, minimum, image_size); in process_mem_region()
617 * immovable memory and @region. in process_mem_region()
623 if (!mem_overlaps(region, &immovable_mem[i])) in process_mem_region()
628 region_end = region->start + region->size; in process_mem_region()
630 entry.start = clamp(region->start, start, end); in process_mem_region()
682 struct mem_vector region; in process_efi_entries() local
728 region.start = md->phys_addr; in process_efi_entries()
729 region.size = md->num_pages << EFI_PAGE_SHIFT; in process_efi_entries()
730 if (process_mem_region(&region, minimum, image_size)) in process_efi_entries()
747 struct mem_vector region; in process_e820_entries() local
756 region.start = entry->addr; in process_e820_entries()
757 region.size = entry->size; in process_e820_entries()
758 if (process_mem_region(&region, minimum, image_size)) in process_e820_entries()
794 struct mem_vector region = { in process_kho_entries() local
799 if (process_mem_region(&region, minimum, image_size)) in process_kho_entries()
896 warn("Physical KASLR disabled: no suitable memory region!"); in choose_random_location()