[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v5 14/20] xen: init memory regions for PVH
Add all usable memory regions to grub memory management and add the needed mmap iterate code, which will be used by grub core (e.g. grub-core/lib/relocator.c or grub-core/mmap/mmap.c). As we are running in 32-bit mode don't add memory above 4GB. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx> --- V5: 0x100000000ULL -> 1ULL << 32 (Roger Pau Monné) --- grub-core/kern/i386/xen/pvh.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/grub-core/kern/i386/xen/pvh.c b/grub-core/kern/i386/xen/pvh.c index 6de84eb8e..1bd503c4a 100644 --- a/grub-core/kern/i386/xen/pvh.c +++ b/grub-core/kern/i386/xen/pvh.c @@ -240,6 +240,30 @@ grub_xen_set_mmap (void) (grub_uint32_t) (&memmap), 0, 0, 0, 0); } +static void +grub_xen_mm_init_regions (void) +{ + grub_uint64_t modend, from, to; + unsigned int i; + + modend = grub_modules_get_end (); + + for (i = 0; i < nr_map_entries; i++) + { + if (map[i].type != GRUB_MEMORY_AVAILABLE) + continue; + from = map[i].addr; + to = from + map[i].len; + if (from < modend) + from = modend; + if (from >= to || from >= (1ULL << 32)) + continue; + if (to > (1ULL << 32)) + to = 1ULL << 32; + grub_mm_init_region ((void *) (grub_addr_t) from, to - from); + } +} + static grub_uint64_t grub_xen_find_page (grub_uint64_t start) { @@ -321,10 +345,21 @@ grub_xen_setup_pvh (void) (void *) par); grub_xen_set_mmap (); + grub_xen_mm_init_regions (); + grub_rsdp_addr = pvh_start_info->rsdp_paddr; } grub_err_t grub_machine_mmap_iterate (grub_memory_hook_t hook, void *hook_data) { + unsigned int i; + + for (i = 0; i < nr_map_entries; i++) + { + if (map[i].len && hook (map[i].addr, map[i].len, map[i].type, hook_data)) + break; + } + + return GRUB_ERR_NONE; } -- 2.16.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |