The following changeset should fix the issue with DomU >=2G where our python devtree code can only handle ints and math from a 2G value promotes the type to long which before this patch we could not encode.

Please test on larger systems.
-JX
On Oct 18, 2006, at 4:20 PM, Xen patchbot-xenppc-unstable wrote:

# HG changeset patch
# User Jimi Xenidis <[EMAIL PROTECTED]>
# Node ID d18a0c0b77d7004631559d4e2f9d31744fe9b34a
# Parent  ece7037c72c6b7944ede2261ec1fe99c1489cff4
[TOOLS][POWERPC] use python "quad" encoding for 2 cell devtree values
When creating a 2G DomU pyhton chokes when it sees a long type.  If a
value is of type long, or promoted to long it should be "packed" as a
quad.

Signed-off-by: Jimi Xenidis <[EMAIL PROTECTED]>
---
 tools/python/xen/xend/FlatDeviceTree.py |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff -r ece7037c72c6 -r d18a0c0b77d7 tools/python/xen/xend/ FlatDeviceTree.py --- a/tools/python/xen/xend/FlatDeviceTree.py Wed Oct 18 11:29:57 2006 -0400 +++ b/tools/python/xen/xend/FlatDeviceTree.py Wed Oct 18 16:07:33 2006 -0400
@@ -37,8 +37,10 @@ def _bincat(seq, separator=''):
     '''Concatenate the contents of seq into a bytestream.'''
     strs = []
     for item in seq:
-        if type(item) == type(0):
+        if isinstance(item, int):
             strs.append(struct.pack(">I", item))
+        elif isinstance(item, long):
+            strs.append(struct.pack(">Q", item))
         else:
             try:
                 strs.append(item.to_bin())
@@ -287,9 +289,9 @@ def build(imghandler):
     root.addprop('compatible', 'Momentum,Maple\0')

     xen = root.addnode('xen')
-    xen.addprop('start-info', 0, 0x3ffc000, 0, 0x1000)
+    xen.addprop('start-info', long(0x3ffc000), long(0x1000))
     xen.addprop('version', 'Xen-3.0-unstable\0')
-    xen.addprop('reg', 0, imghandler.vm.domid, 0, 0)
+    xen.addprop('reg', long(imghandler.vm.domid), long(0))
     xen.addprop('domain-name', imghandler.vm.getName() + '\0')
     xencons = xen.addnode('console')
     xencons.addprop('interrupts', 1, 0)
@@ -301,14 +303,14 @@ def build(imghandler):

     # RMA node
     rma = root.addnode('[EMAIL PROTECTED]')
-    rma.addprop('reg', 0, 0, 0, rma_bytes)
+    rma.addprop('reg', long(0), long(rma_bytes))
     rma.addprop('device_type', 'memory\0')

     # all the rest in a single node
     remaining = totalmem - rma_bytes
     if remaining > 0:
         mem = root.addnode('[EMAIL PROTECTED]')
-        mem.addprop('reg', 0, rma_bytes, 0, remaining)
+        mem.addprop('reg', long(rma_bytes), long(remaining))
         mem.addprop('device_type', 'memory\0')

     # add CPU nodes
@@ -346,8 +348,8 @@ def build(imghandler):
     chosen.addprop('interrupt-controller', xen.get_phandle())
     chosen.addprop('bootargs', imghandler.cmdline + '\0')
     # xc_linux_load.c will overwrite these 64-bit properties later
-    chosen.addprop('linux,initrd-start', 0, 0)
-    chosen.addprop('linux,initrd-end', 0, 0)
+    chosen.addprop('linux,initrd-start', long(0))
+    chosen.addprop('linux,initrd-end', long(0))

     if 1:
         f = file('/tmp/domU.dtb', 'w')

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel


_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to