[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 11/16] x86/hyperlaunch: locate dom0 initrd with hyperlaunch
From: "Daniel P. Smith" <dpsmith@xxxxxxxxxxxxxxxxxxxx> Look for a subnode of type `multiboot,ramdisk` within a domain node and parse via the fdt_read_multiboot_module() helper. After a successful helper call, the module index is returned and the module is guaranteed to be in the module list. Fix unused typo in adjacent comment. Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Jason Andryuk <jason.andryuk@xxxxxxx> Signed-off-by: Alejandro Vallejo <agarciav@xxxxxxx> --- v3: * Reworded commit message to state the helper postconditions. * Wrapped long line * Fix ramdisk -> module rename * Move ramdisk parsing from later patch * Remove initrdidx indent --- xen/arch/x86/domain-builder/fdt.c | 29 +++++++++++++++++++++++++++++ xen/arch/x86/setup.c | 4 ++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/domain-builder/fdt.c b/xen/arch/x86/domain-builder/fdt.c index bc9903a9de..0f5fd01557 100644 --- a/xen/arch/x86/domain-builder/fdt.c +++ b/xen/arch/x86/domain-builder/fdt.c @@ -195,6 +195,35 @@ static int __init process_domain_node( !((char *)__va(bd->kernel->cmdline_pa))[0] ) bd->kernel->fdt_cmdline = fdt_get_prop_offset( fdt, node, "bootargs", &bd->kernel->cmdline_pa); + + continue; + } + else if ( fdt_node_check_compatible(fdt, node, + "multiboot,ramdisk") == 0 ) + { + int idx; + + if ( bd->module ) + { + printk(XENLOG_ERR "Duplicate ramdisk module for domain %s)\n", + name); + continue; + } + + idx = fdt_read_multiboot_module(fdt, node, address_cells, + size_cells,bi); + if ( idx < 0 ) + { + printk(" failed processing ramdisk module for domain %s\n", + name); + return -EINVAL; + } + + printk(" ramdisk: boot module %d\n", idx); + bi->mods[idx].type = BOOTMOD_RAMDISK; + bd->module = &bi->mods[idx]; + + continue; } } diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index ca4415d020..3dfa81b48c 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -2149,11 +2149,11 @@ void asmlinkage __init noreturn __start_xen(void) * At this point all capabilities that consume boot modules should have * claimed their boot modules. Find the first unclaimed boot module and * claim it as the initrd ramdisk. Do a second search to see if there are - * any remaining unclaimed boot modules, and report them as unusued initrd + * any remaining unclaimed boot modules, and report them as unused initrd * candidates. */ initrdidx = first_boot_module_index(bi, BOOTMOD_UNKNOWN); - if ( initrdidx < MAX_NR_BOOTMODS ) + if ( !bi->hyperlaunch_enabled && initrdidx < MAX_NR_BOOTMODS ) { bi->mods[initrdidx].type = BOOTMOD_RAMDISK; bi->domains[0].module = &bi->mods[initrdidx]; -- 2.43.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |