Could you try the attached patch?

On Fri, Feb 13, 2009 at 05:03:07PM +0800, Zhang, Jingke wrote:
> Hi all,
>      With latest Cset#19203, dom0 will crash when destroying VTI, either by 
> "xm des ..." or "run poweroff in VTI". It blocks this round of ABAT testing. 
> 
>     Serial log info is in below:
>     =================
> (XEN) Assertion 'entry->prev->next == entry' failed, line 170, file
> /home/build/nightly/builds_xen_ia64_unstable/xen-3.3-hg-xen_ia64_unstable-19203-20090213/xen/include/xen/list.h
> (XEN) Xen BUG at
> /home/build/nightly/builds_xen_ia64_unstable/xen-3.3-hg-xen_ia64_unstable-19203-20090213/xen/include/xen/list.h:170
> (XEN) FIXME: implement ia64 dump_execution_state()
> (XEN) 
> (XEN) Call Trace:
> (XEN)  [<f4000000040fbbf0>] show_stack+0x90/0xb0
> (XEN)                                 sp=f0000002fcd8fbf0 bsp=f0000002fcd89708
> (XEN)  [<f4000000040fc700>] dump_stack+0x30/0x50
> (XEN)                                 sp=f0000002fcd8fdc0 bsp=f0000002fcd896e8
> (XEN)  [<f400000004060d10>] __bug+0x70/0xa0
> (XEN)                                 sp=f0000002fcd8fdc0 bsp=f0000002fcd896b8
> (XEN)  [<f400000004031050>] free_domheap_pages+0x380/0x700
> (XEN)                                 sp=f0000002fcd8fdc0 bsp=f0000002fcd89658
> (XEN)  [<f4000000040a7e30>] domain_page_flush_and_put+0x1c0/0x500
> (XEN)                                 sp=f0000002fcd8fdc0 bsp=f0000002fcd89610
> (XEN)  [<f4000000040a8300>] domain_put_page+0x190/0x530
> (XEN)                                 sp=f0000002fcd8fdd0 bsp=f0000002fcd895a0
> (XEN)  [<f4000000040a8980>] zap_domain_page_one+0x2e0/0x4e0
> (XEN)                                 sp=f0000002fcd8fde0 bsp=f0000002fcd89500
> (XEN)  [<f4000000040a8e40>] dom0vp_zap_physmap+0x70/0x90
> (XEN)                                 sp=f0000002fcd8fdf0 bsp=f0000002fcd894c8
> (XEN)  [<f40000000407f990>] do_dom0vp_op+0x2a0/0x730
> (XEN)                                 sp=f0000002fcd8fdf0 bsp=f0000002fcd89480
> (XEN)  [<f400000004002e30>] fast_hypercall+0x170/0x340
> (XEN)                                 sp=f0000002fcd8fe00 bsp=f0000002fcd89480
> (XEN) 
> (XEN) ****************************************
> (XEN) Panic on CPU 2:
> (XEN) Xen BUG at
> /home/build/nightly/builds_xen_ia64_unstable/xen-3.3-hg-xen_ia64_unstable-19203-20090213/xen/include/xen/list.h:170
> (XEN) ****************************************
> (XEN) 
> (XEN) Reboot in five seconds...  
> 
> 
> Thanks,
> Zhang Jingke
> 
> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@lists.xensource.com
> http://lists.xensource.com/xen-ia64-devel
> 

-- 
yamahata
[IA64] fix relinquish_memory()

This patch fixes the following panic.

(XEN) Assertion 'entry->prev->next == entry' failed, line 170, file xen-unstable.hg/xen/include/xen/list.h
(XEN) Xen BUG at xen-unstable.hg/xen/include/xen/list.h:170
(XEN) FIXME: implement ia64 dump_execution_state()
(XEN) 
(XEN) Call Trace:
(XEN)  [<f400000004104670>] show_stack+0x90/0xb0
(XEN)                                 sp=f0000002f64cfbf0 bsp=f0000002f64c9918
(XEN)  [<f400000004105180>] dump_stack+0x30/0x50
(XEN)                                 sp=f0000002f64cfdc0 bsp=f0000002f64c98f8
(XEN)  [<f400000004064ac0>] __bug+0x70/0xa0
(XEN)                                 sp=f0000002f64cfdc0 bsp=f0000002f64c98c8
(XEN)  [<f400000004031290>] free_domheap_pages+0x380/0x700
(XEN)                                 sp=f0000002f64cfdc0 bsp=f0000002f64c9868
(XEN)  [<f4000000040ac470>] domain_page_flush_and_put+0x1c0/0x550
(XEN)                                 sp=f0000002f64cfdc0 bsp=f0000002f64c9820
(XEN)  [<f4000000040ac990>] domain_put_page+0x190/0x530
(XEN)                                 sp=f0000002f64cfdd0 bsp=f0000002f64c97b0
(XEN)  [<f4000000040ad060>] zap_domain_page_one+0x330/0x530
(XEN)                                 sp=f0000002f64cfde0 bsp=f0000002f64c9710
(XEN)  [<f4000000040ad570>] dom0vp_zap_physmap+0x70/0xe0
(XEN)                                 sp=f0000002f64cfdf0 bsp=f0000002f64c96d8
(XEN)  [<f4000000040838f0>] do_dom0vp_op+0x320/0x7b0
(XEN)                                 sp=f0000002f64cfdf0 bsp=f0000002f64c9690
(XEN)  [<f400000004002e60>] fast_hypercall+0x170/0x310
(XEN)                                 sp=f0000002f64cfe00 bsp=f0000002f64c9690
(XEN) 
(XEN) ****************************************
(XEN) Panic on CPU 2:
(XEN) Xen BUG at xen-unstable.hg/xen/include/xen/list.h:170
(XEN) ****************************************
(XEN) 
(XEN) Reboot in five seconds...
(XEN) Debugging connection not set up.

Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp>

diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c
+++ b/xen/arch/ia64/xen/domain.c
@@ -1705,13 +1705,7 @@ static int relinquish_memory(struct doma
         }
     }
 
-    /* list is empty at this point. */
-    if ( !page_list_empty(&d->arch.relmem_list) )
-    {
-        *list = d->arch.relmem_list;
-        INIT_PAGE_LIST_HEAD(&d->arch.relmem_list);
-    }
-
+    page_list_splice_init(&d->arch.relmem_list, list);
 
  out:
     spin_unlock_recursive(&d->page_alloc_lock);
diff --git a/xen/include/asm-ia64/mm.h b/xen/include/asm-ia64/mm.h
--- a/xen/include/asm-ia64/mm.h
+++ b/xen/include/asm-ia64/mm.h
@@ -92,6 +92,24 @@ struct page_info
     u32 tlbflush_timestamp;
 };
 
+#ifndef page_list_entry
+static inline void
+page_list_splice_init(struct page_list_head *list, struct page_list_head *head)
+{
+    if ( !page_list_empty(list) )
+    {
+        if ( head->next )
+            head->tail->list.next = page_to_mfn(list->next);
+        else
+            head->next = list->next;
+        head->tail = list->tail;
+        INIT_PAGE_LIST_HEAD(list);
+    }
+}
+#else
+# define page_list_splice_init	list_splice_init
+#endif
+
 #define set_page_count(p,v) 	atomic_set(&(p)->_count, v - 1)
 
 /*
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to