libxc: correct domain builder for 64 bit guest with 32 bit tools
authorJuergen Gross <jgross@suse.com>
Tue, 1 Dec 2015 07:49:49 +0000 (08:49 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 1 Dec 2015 12:12:19 +0000 (12:12 +0000)
Commit 8c45adec18e0512c3d34dcafb13414ecba21be6a ("create unmapped
initrd in domain builder if supported") introduced an error for
building a 64 bit guest with a 32 bit toolset.

The initrd start address and size where stored in an unsigned long
instead of using a 64 bit type.

Signed-off-by: Juergen Gross <jgross@suse.com>
Tested-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
tools/libxc/include/xc_dom.h

index 217621600a247eec481fd9d9d38e85b8a3ab7f2f..fd8c5e89323a6140db6c22b3e319abd8c7cbddb6 100644 (file)
@@ -98,9 +98,14 @@ struct xc_dom_image {
     xen_vaddr_t virt_alloc_end;
     xen_vaddr_t bsd_symtab_start;
 
-    /* initrd parameters as specified in start_info page */
-    unsigned long initrd_start;
-    unsigned long initrd_len;
+    /*
+     * initrd parameters as specified in start_info page
+     * Depending on capabilities of the booted kernel this may be a virtual
+     * address or a pfn. Type is neutral and large enough to hold a virtual
+     * address of a 64 bit kernel even with 32 bit toolstack.
+     */
+    uint64_t initrd_start;
+    uint64_t initrd_len;
 
     unsigned int alloc_bootstack;
     xen_vaddr_t virt_pgtab_end;