[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 13/18] xen: init memory regions for PVH
From: |
Juergen Gross |
Subject: |
[PATCH v3 13/18] xen: init memory regions for PVH |
Date: |
Wed, 24 Oct 2018 16:54:22 +0200 |
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 <address@hidden>
---
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 487a87214..69efe550c 100644
--- a/grub-core/kern/i386/xen/pvh.c
+++ b/grub-core/kern/i386/xen/pvh.c
@@ -217,6 +217,30 @@ grub_xen_get_mmap (void)
grub_xen_sort_mmap ();
}
+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 >= 0x100000000ULL)
+ continue;
+ if (to > 0x100000000ULL)
+ to = 0x100000000ULL;
+ grub_mm_init_region ((void *) (grub_addr_t) from, to - from);
+ }
+}
+
static grub_uint64_t
grub_xen_find_page (grub_uint64_t start)
{
@@ -296,10 +320,21 @@ grub_xen_setup_pvh (void)
grub_xen_shared_info = grub_xen_add_physmap (XENMAPSPACE_shared_info,
(void *) par);
+ 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
- [PATCH v3 03/18] xen: carve out grant tab initialization into dedicated function, (continued)
- [PATCH v3 03/18] xen: carve out grant tab initialization into dedicated function, Juergen Gross, 2018/10/24
- [PATCH v3 07/18] xen: add PVH specific defines to offset.h, Juergen Gross, 2018/10/24
- [PATCH v3 10/18] xen: setup hypercall page for PVH, Juergen Gross, 2018/10/24
- [PATCH v3 06/18] xen: rearrange xen/init.c to prepare it for Xen PVH mode, Juergen Gross, 2018/10/24
- [PATCH v3 08/18] xen: add basic hooks for PVH in current code, Juergen Gross, 2018/10/24
- [PATCH v3 02/18] loader/linux: support passing rsdp address via boot params, Juergen Gross, 2018/10/24
- [PATCH v3 15/18] grub-module-verifier: Ignore all_video for xenpvh, Juergen Gross, 2018/10/24
- [PATCH v3 11/18] xen: get memory map from hypervisor for PVH, Juergen Gross, 2018/10/24
- [PATCH v3 17/18] xen_pvh: support grub-install for xen_pvh, Juergen Gross, 2018/10/24
- [PATCH v3 14/18] xen_pvh: add build runes for grub-core, Juergen Gross, 2018/10/24
- [PATCH v3 13/18] xen: init memory regions for PVH,
Juergen Gross <=
- [PATCH v3 18/18] xen_pvh: add support to configure, Juergen Gross, 2018/10/24
- [PATCH v3 09/18] xen: add PVH boot entry code, Juergen Gross, 2018/10/24
- [PATCH v3 12/18] xen: setup Xen specific data for PVH, Juergen Gross, 2018/10/24
- [PATCH v3 16/18] xen_pvh: support building a standalone image, Juergen Gross, 2018/10/24
- [PATCH v3 01/18] xen: add some xen headers, Juergen Gross, 2018/10/24
- Re: [Xen-devel] [PATCH v3 00/18] xen: add pvh guest support, Hans van Kranenburg, 2018/10/24