Lines Matching refs:regions
19 struct regions {
93 u32 end, struct regions *regions)
106 if (regions->reserved_mem < 0)
110 for (subnode = fdt_first_subnode(fdt, regions->reserved_mem);
117 while (len >= (regions->reserved_mem_addr_cells +
118 regions->reserved_mem_size_cells)) {
121 if (regions->reserved_mem_addr_cells == 2)
124 reg += regions->reserved_mem_addr_cells;
125 len -= 4 * regions->reserved_mem_addr_cells;
128 if (regions->reserved_mem_size_cells == 2)
131 reg += regions->reserved_mem_size_cells;
132 len -= 4 * regions->reserved_mem_size_cells;
134 if (base >= regions->pa_end)
146 u32 end, struct regions *regions)
148 if (regions_intersect(start, end, regions->zimage_start,
149 regions->zimage_start + regions->zimage_size))
152 if (regions_intersect(start, end, regions->initrd_start,
153 regions->initrd_start + regions->initrd_size))
156 if (regions_intersect(start, end, regions->dtb_start,
157 regions->dtb_start + regions->dtb_size))
160 return intersects_reserved_region(fdt, start, end, regions);
163 static u32 count_suitable_regions(const void *fdt, struct regions *regions,
168 for (pa = regions->pa_start; pa < regions->pa_end; pa += SZ_2M, i++) {
170 pa + regions->image_size,
171 regions)) {
181 /* The caller ensures that num is within the range of regions.*/
330 struct regions regions;
358 regions.image_size = image_base % SZ_128M + round_up(image_size, SZ_2M);
359 regions.pa_start = round_down(image_base, SZ_128M);
360 regions.pa_end = lowmem_top - PAGE_OFFSET + regions.pa_start;
361 regions.zimage_start = zimage_start;
362 regions.zimage_size = zimage_end - zimage_start;
363 regions.dtb_start = (u32)fdt;
364 regions.dtb_size = fdt_totalsize(fdt);
370 seed = __crc16(seed, fdt, regions.dtb_size);
376 regions.initrd_start = regions.initrd_size = 0;
379 regions.initrd_start = __memparse(p + 7, &p);
381 regions.initrd_size = __memparse(p, NULL);
382 if (regions.initrd_size == 0)
383 regions.initrd_start = 0;
387 if (regions.initrd_size == 0) {
405 regions.initrd_start = start;
406 regions.initrd_size = max_t(u64, end, U32_MAX) - start;
417 regions.pa_end = min(regions.pa_end, mem_fdt) - regions.image_size;
419 regions.pa_end = regions.pa_end - regions.image_size;
421 puthex32(regions.image_size);
422 puthex32(regions.pa_start);
423 puthex32(regions.pa_end);
424 puthex32(regions.zimage_start);
425 puthex32(regions.zimage_size);
426 puthex32(regions.dtb_start);
427 puthex32(regions.dtb_size);
428 puthex32(regions.initrd_start);
429 puthex32(regions.initrd_size);
432 regions.reserved_mem = fdt_path_offset(fdt, "/reserved-memory");
433 if (regions.reserved_mem >= 0)
434 get_cell_sizes(fdt, regions.reserved_mem,
435 ®ions.reserved_mem_addr_cells,
436 ®ions.reserved_mem_size_cells);
441 * with any of the reserved regions for the zImage itself, the DTB,
442 * the initrd and any regions described as reserved in the device tree.
448 count = count_suitable_regions(fdt, ®ions, bitmap);