diff options
Diffstat (limited to 'tools/libxc/xc_dom_ia64.c')
-rw-r--r-- | tools/libxc/xc_dom_ia64.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/libxc/xc_dom_ia64.c b/tools/libxc/xc_dom_ia64.c index 7214c3c299..c6e4424515 100644 --- a/tools/libxc/xc_dom_ia64.c +++ b/tools/libxc/xc_dom_ia64.c @@ -26,7 +26,11 @@ static int alloc_magic_pages(struct xc_dom_image *dom) /* allocate special pages */ dom->console_pfn = dom->total_pages -1; dom->xenstore_pfn = dom->total_pages -2; - dom->start_info_pfn = dom->total_pages -3; + + /* + * this is initialized by arch_setup_middle(). + * dom->start_info_pfn = dom->total_pages -3; + */ return 0; } @@ -39,6 +43,7 @@ static int start_info_ia64(struct xc_dom_image *dom) xc_dom_printf("%s\n", __FUNCTION__); + memset(start_info, 0, sizeof(*start_info)); sprintf(start_info->magic, dom->guest_type); start_info->flags = dom->flags; start_info->nr_pages = dom->total_pages; @@ -54,12 +59,12 @@ static int start_info_ia64(struct xc_dom_image *dom) bp->initrd_start = start_info->mod_start; bp->initrd_size = start_info->mod_len; } + bp->command_line = (dom->start_info_pfn << PAGE_SHIFT_IA64) + + offsetof(start_info_t, cmd_line); if (dom->cmdline) { strncpy((char *)start_info->cmd_line, dom->cmdline, MAX_GUEST_CMDLINE); start_info->cmd_line[MAX_GUEST_CMDLINE - 1] = '\0'; - bp->command_line = (dom->start_info_pfn << PAGE_SHIFT_IA64) - + offsetof(start_info_t, cmd_line); } return 0; } |