# HG changeset patch
# User Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
# Node ID 7a20fed8be73857abe33d308ed27099efbff4a3c
# Parent 1d9c135673e4db41789d730d843c9e5f8de3a4eb
[POWERPC][TOOLS] flatdevtree requires us to reserve the ramdisk
The following patch solves the DomU:
Freeing initrd memory: 3137k freed
Bad page state in process 'swapper'
error message that was cause by not reserving the memory in the
flattened device tree.
We have to pre-reserve these entries when we create the tree in
FlatDeviceTree.py and fix it later because there appears to be no way
to add a reservation in libxc.
Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
---
tools/libxc/powerpc64/xc_linux_build.c | 8 +++++++-
tools/python/xen/xend/FlatDeviceTree.py | 8 +++++++-
2 files changed, 14 insertions(+), 2 deletions(-)
diff -r 1d9c135673e4 -r 7a20fed8be73 tools/libxc/powerpc64/xc_linux_build.c
--- a/tools/libxc/powerpc64/xc_linux_build.c Fri Sep 15 18:20:55 2006 -0400
+++ b/tools/libxc/powerpc64/xc_linux_build.c Sat Sep 16 09:34:26 2006 -0400
@@ -208,6 +208,12 @@ static int load_devtree(
return rc;
}
+ rc = ft_set_rsvmap(devtree, 1, initrd_base, initrd_len);
+ if (rc < 0) {
+ DPRINTF("couldn't set initrd reservation\n");
+ return ~0UL;
+ }
+
/* start-info (XXX being removed soon) */
rc = ft_set_prop(&devtree, xen, "start-info",
start_info, sizeof(start_info));
@@ -379,7 +385,7 @@ static unsigned long create_start_info(v
rc = ft_set_rsvmap(devtree, 0, si_addr, 4*PAGE_SIZE);
if (rc < 0) {
- DPRINTF("couldn't set first reservation\n");
+ DPRINTF("couldn't set start_info reservation\n");
return ~0UL;
}
diff -r 1d9c135673e4 -r 7a20fed8be73 tools/python/xen/xend/FlatDeviceTree.py
--- a/tools/python/xen/xend/FlatDeviceTree.py Fri Sep 15 18:20:55 2006 -0400
+++ b/tools/python/xen/xend/FlatDeviceTree.py Sat Sep 16 09:34:26 2006 -0400
@@ -271,8 +271,14 @@ def build(imghandler):
the host's device tree.'''
root = Tree()
- # 4 pages: start_info, console, store, shared_info
+ # 1st reseravtion entry used for start_info, console, store, shared_info
root.reserve(0x3ffc000, 0x4000)
+
+ # 2nd reservation enrty used for initrd, later on when we load the
+ # initrd we may fill this in with zeroes which signifies the end
+ # of the reservation map. So as to avoid adding a zero map now we
+ # put some bogus yet sensible numbers here.
+ root.reserve(0x1000000, 0x1000)
root.addprop('device_type', 'chrp-but-not-really\0')
root.addprop('#size-cells', 2)
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|