[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC v2 0/4] QEMU changes to do PVH boot
Hi Liam, On Tue, Jan 8, 2019 at 3:47 PM Liam Merwick <liam.merwick@xxxxxxxxxx> wrote: > QEMU sets the hvm_modlist_entry in load_linux() after the call to > load_elfboot() and then qboot loads it in boot_pvh_from_fw_cfg() > > But the current PVH patches don't handle initrd (they have > start_info.nr_modules == 1). Looking in the linux kernel (arch/x86/platform/pvh/enlighten.c) I saw: /* The first module is always ramdisk. */ if (pvh_start_info.nr_modules) { struct hvm_modlist_entry *modaddr = __va(pvh_start_info.modlist_paddr); pvh_bootparams.hdr.ramdisk_image = modaddr->paddr; pvh_bootparams.hdr.ramdisk_size = modaddr->size; } So, putting start_info.nr_modules = 1, means that the first hvm_modlist_entry should have the ramdisk paddr and size. Is it correct? > > During (or after) the call to load_elfboot() it looks like we'd need to > do something like what load_multiboot() does below (along with the > associated initialisation) > > 400 fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_ADDR, ADDR_MBI); > 401 fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_SIZE, sizeof(bootinfo)); > 402 fw_cfg_add_bytes(fw_cfg, FW_CFG_INITRD_DATA, mb_bootinfo_data, > 403 sizeof(bootinfo)); > In this case I think they used the FW_CFG_INITRD_* to pass bootinfo varibales to the guest, maybe we could add something like what linux_load() does: /* load initrd */ if (initrd_filename) { ... initrd_addr = (initrd_max-initrd_size) & ~4095; fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_ADDR, initrd_addr); fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_SIZE, initrd_size); fw_cfg_add_bytes(fw_cfg, FW_CFG_INITRD_DATA, initrd_data, initrd_size); ... } Then we can load the initrd in qboot or in the optionrom that I'm writing. What do you think? Thanks, Stefano > I'm checking to see if that has any implications for the kernel side. > > Regards, > Liam > -- Stefano Garzarella Red Hat _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |