On Sep 20, 2006, at 11:29 PM, Amos Waterland wrote:

On Wed, Sep 20, 2006 at 10:52:32PM -0400, Amos Waterland wrote:
On Wed, Sep 20, 2006 at 07:20:54PM -0400, Amos Waterland wrote:
On Wed, Sep 20, 2006 at 11:35:51AM -0500, Hollis Blanchard wrote:
On Tue, 2006-09-19 at 20:04 -0400, Amos Waterland wrote:
I am seeing this when loading dom0 now on JS21:

(XEN) Assertion 'entry->next->prev == entry' failed, line 92 ...
(XEN) BUG at /home/apw/devel/xen/xen.hg/xen/include/xen/list.h:92

I am using latest Xen and Linux.

I cannot reproduce; I successfully started three domUs before exhausting
my Maple's memory.

This JS21 has 8GB of RAM, and I think that may be exposing a problem
in SLOF or Xen.

Dom0 gets 192MiB or 1/16th of memory, the latter being a Xen convention.
So 8GiB puts dom0 at 512MiB or 64MiB RMA + (28 * 16MiB) Extents, which is more than the maples can do.

Here is the backtrace:

(XEN) Assertion 'entry->next->prev == entry' failed, line 92, file / home/apw/devel/xen/xen.hg/xen/include/xen/list.h
(XEN) BUG at /home/apw/devel/xen/xen.hg/xen/include/xen/list.h:92
(XEN) [00000000004639A0] 0000000000431BC8 .__bug+0x74/0x8c (unreliable)
(XEN) [0000000000463A40] 000000000041738C .list_del+0x6c/0x104
(XEN) [0000000000463AC0] 0000000000417044 .alloc_heap_pages +0x140/0x28c (XEN) [0000000000463B60] 0000000000418990 .alloc_domheap_pages +0x14c/0x4ec
(XEN) [0000000000463C40] 0000000000441924 .allocate_extents+0x74/0x108
(XEN) [0000000000463CF0] 0000000000438E64 .construct_dom0+0x298/0xbcc
(XEN) [0000000000463E90] 00000000004581F0 .__start_xen+0x56c/0x640
(XEN) [0000000000463F70] 0000000000458360 .__start_xen_ppc+0x9c/0xbc
(XEN) [0000000000464000] 0000000000400138 _start+0x38/0x3c

Ahh, this is helpful, we are probably exhausting one of the heap lists:
alloc_heap_pages() calls list_del() if !list_empty()
list_del() claims that:
Note: List_Empty On Entry Does Not Return True After This, The Entry Is In An Undefined State.

now I'm not one to believe comments but it looks like the (mangled?) patch below might help. I don't have access to a machine with that much memory yet, but until I do I'd like to get a yay/nay on this from someone who can, if this is the case then we should send it upstream,

diff -r bcb5998a0abc xen/common/page_alloc.c
--- a/xen/common/page_alloc.c   Thu Sep 21 07:37:00 2006 -0400
+++ b/xen/common/page_alloc.c   Thu Sep 21 13:38:00 2006 -0400
@@ -313,7 +313,7 @@ struct page_info *alloc_heap_pages(unsig
     pg = list_entry(heap[zone][i].next, struct page_info, list);
-    list_del(&pg->list);
+    list_del_init(&pg->list);
     /* We may have to halve the chunk a number of times. */
     while ( i != order )

Xen-ppc-devel mailing list

Reply via email to