2.6.15 failure on power4 iSeries

Michael Ellerman michael at ellerman.id.au
Tue Jan 24 10:19:09 EST 2006


I think I might have found what's causing this.

On my box at least, we're trying to allocate 0 bytes in finish_device_tree().
 lmb_alloc() happily does that, and reserves the 0 bytes for us. On my
machine that reserved region gets coallesced with another and so there's no
bug, but perhaps on yours it doesn't get coallesced and eventually it blows
up in reserve_bootmem().

Prior to benh's n_addrs patch finish_device_tree() wants to allocate 24 bytes,
 whereas with it it allocates 0 (for iSeries). So that's exposed the bug in
the lmb code.

This'll show us what's happening:

--- linux.orig/arch/powerpc/kernel/prom.c       2006-01-24 11:27:15.000000000 +1300
+++ linux/arch/powerpc/kernel/prom.c    2006-01-24 11:34:40.000000000 +1300
@@ -13,7 +13,7 @@
  *      2 of the License, or (at your option) any later version.
  */
 
-#undef DEBUG
+#define DEBUG 1
 
 #include <stdarg.h>
 #include <linux/config.h>
@@ -704,6 +704,7 @@ void __init finish_device_tree(void)
        size = 16;
        finish_node(allnodes, &size, NULL, 0, 0, 1);
        size -= 16;
+       DBG("finish_device_tree: size = %d\n", size);
        end = start = (unsigned long) __va(lmb_alloc(size, 128));
        finish_node(allnodes, &end, NULL, 0, 0, 0);
        BUG_ON(end != start + size);

cheers

-- 
Michael Ellerman
IBM OzLabs

email: michael:ellerman.id.au
inmsg: mpe:jabber.org
wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://ozlabs.org/pipermail/linuxppc64-dev/attachments/20060124/f8427f80/attachment.pgp 


More information about the Linuxppc64-dev mailing list