@@ -642,15 +642,14 @@ static bool __init check_and_adjust_load_address(
return true;
}
-static int __init pvh_load_kernel(struct domain *d, const module_t *image,
- unsigned long image_headroom,
- module_t *initrd, void *image_base,
- const char *cmdline, paddr_t *entry,
- paddr_t *start_info_addr)
+static int __init pvh_load_kernel(
+ struct domain *d, const struct boot_module *image,
+ struct boot_module *initrd, void *image_base,
+ const char *cmdline, paddr_t *entry, paddr_t *start_info_addr)
{
- void *image_start = image_base + image_headroom;
- unsigned long image_len = image->mod_end;
- unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+ void *image_start = image_base + image->headroom;
+ unsigned long image_len = image->size;
+ unsigned long initrd_len = initrd ? initrd->size : 0;
struct elf_binary elf;
struct elf_dom_parms parms;
paddr_t last_addr;
@@ -725,7 +724,7 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
if ( initrd != NULL )
{
- rc = hvm_copy_to_guest_phys(last_addr, mfn_to_virt(initrd->mod_start),
+ rc = hvm_copy_to_guest_phys(last_addr, maddr_to_virt(initrd->start),
initrd_len, v);
if ( rc )
{
@@ -736,9 +735,9 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
mod.paddr = last_addr;
mod.size = initrd_len;
last_addr += ROUNDUP(initrd_len, elf_64bit(&elf) ? 8 : 4);
- if ( initrd->string )
+ if ( initrd->cmdline )
{
- char *str = __va(initrd->string);
+ char *str = __va((unsigned long)initrd->cmdline);
size_t len = strlen(str) + 1;
rc = hvm_copy_to_guest_phys(last_addr, str, len, v);
@@ -1346,8 +1345,8 @@ int __init dom0_construct_pvh(
return rc;
}
- rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
- bootstrap_map_bm(image), cmdline, &entry, &start_info);
+ rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+ &entry, &start_info);
if ( rc )
{
printk("Failed to load Dom0 kernel\n");