[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH] plat/xen: x86: Detect initrd entry from start_info
Registers an init ramdisk as memory region. Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- plat/xen/x86/setup.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/plat/xen/x86/setup.c b/plat/xen/x86/setup.c index 7882ebef..5ac24124 100644 --- a/plat/xen/x86/setup.c +++ b/plat/xen/x86/setup.c @@ -104,7 +104,7 @@ char _libxenplat_bootstack[2*__STACK_SIZE]; /* * Memory region description */ -#define UKPLAT_MEMRD_MAX_ENTRIES 2 +#define UKPLAT_MEMRD_MAX_ENTRIES 3 unsigned int _libxenplat_mrd_num; struct ukplat_memregion_desc _libxenplat_mrd[UKPLAT_MEMRD_MAX_ENTRIES]; @@ -163,6 +163,24 @@ static inline void _init_mem(void) DEMAND_MAP_PAGES); _libxenplat_mrd_num = 2; + + /* initrd */ + if (HYPERVISOR_start_info->mod_len) { + if (HYPERVISOR_start_info->flags & SIF_MOD_START_PFN) + _libxenplat_mrd[2].base = + to_virt(HYPERVISOR_start_info->mod_start); + else + _libxenplat_mrd[2].base = + (void *) HYPERVISOR_start_info->mod_start; + _libxenplat_mrd[2].len = + (size_t) HYPERVISOR_start_info->mod_len; + _libxenplat_mrd[2].flags = (UKPLAT_MEMRF_INITRD + | UKPLAT_MEMRF_WRITABLE); +#if CONFIG_UKPLAT_MEMRNAME + _libxenplat_mrd[2].name = "initrd"; +#endif + _libxenplat_mrd_num++; + } } void _libxenplat_x86entry(void *start_info) __noreturn; -- 2.20.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |