|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] tools: libxc: allow HVM firmware to be lo
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1306257845 -3600
# Node ID f62ef47cc5912deb2e3fa77b2b932373047c646b
# Parent 2b84aed6017584004cb7157792c9da15acb17000
tools: libxc: allow HVM firmware to be loaded at an arbitrary alignment
Enables direct loading of e.g. seabios.elf.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
diff -r 2b84aed60175 -r f62ef47cc591 tools/libxc/xc_hvm_build.c
--- a/tools/libxc/xc_hvm_build.c Tue May 24 18:22:23 2011 +0100
+++ b/tools/libxc/xc_hvm_build.c Tue May 24 18:24:05 2011 +0100
@@ -88,7 +88,9 @@
struct elf_binary *elf, uint32_t dom, unsigned long *parray)
{
privcmd_mmap_entry_t *entries = NULL;
- size_t pages = (elf->pend - elf->pstart + PAGE_SIZE - 1) >> PAGE_SHIFT;
+ unsigned long pfn_start = elf->pstart >> PAGE_SHIFT;
+ unsigned long pfn_end = (elf->pend + PAGE_SIZE - 1) >> PAGE_SHIFT;
+ size_t pages = pfn_end - pfn_start;
int i, rc = -1;
/* Map address space for initial elf image. */
@@ -105,6 +107,8 @@
if ( elf->dest == NULL )
goto err;
+ elf->dest += elf->pstart & (PAGE_SIZE - 1);
+
/* Load the initial elf image. */
elf_load_binary(elf);
rc = 0;
@@ -172,12 +176,6 @@
goto error_out;
}
- if ( (elf.pstart & (PAGE_SIZE - 1)) != 0 )
- {
- PERROR("Guest OS must load to a page boundary.");
- goto error_out;
- }
-
IPRINTF("VIRTUAL MEMORY ARRANGEMENT:\n"
" Loader: %016"PRIx64"->%016"PRIx64"\n"
" TOTAL: %016"PRIx64"->%016"PRIx64"\n"
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] tools: libxc: allow HVM firmware to be loaded at an arbitrary alignment,
Xen patchbot-unstable <=
|
|
|
|
|