[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Stop all cpus at panic



# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1197393757 25200
# Node ID 124f7a7f5f84f69c1d6430ace1affd8f6cc00626
# Parent  35b2c54f59d5ab9c8fa414be86f2668da4149b6a
[IA64] Stop all cpus at panic

Current panic() of hypervisor doesn't stop all cpus.
So domains can work after hypervisor panic (when using
noreboot option).  If dom0 continues to work after
xen panic, the system may get into serious problems.

This patch fixes the issue.

I chose cpu_halt() to stop other cpus by smp_send_stop().
I think it should work fine for kexec.  machine_halt()
is only spinloop for leaving the panic calltrace.

Signed-off-by: Akio Takebe <takebe_akio@xxxxxxxxxxxxxx>
---
 xen/arch/ia64/linux-xen/smp.c |    4 ----
 xen/arch/ia64/xen/domain.c    |   10 ++++++----
 2 files changed, 6 insertions(+), 8 deletions(-)

diff -r 35b2c54f59d5 -r 124f7a7f5f84 xen/arch/ia64/linux-xen/smp.c
--- a/xen/arch/ia64/linux-xen/smp.c     Tue Dec 11 10:14:11 2007 -0700
+++ b/xen/arch/ia64/linux-xen/smp.c     Tue Dec 11 10:22:37 2007 -0700
@@ -122,9 +122,7 @@ stop_this_cpu (void)
        cpu_clear(smp_processor_id(), cpu_online_map);
        max_xtp();
        local_irq_disable();
-#ifndef XEN
        cpu_halt();
-#endif
 }
 
 void
@@ -132,9 +130,7 @@ cpu_die(void)
 {
        max_xtp();
        local_irq_disable();
-#ifndef XEN
        cpu_halt();
-#endif
        /* Should never be here */
        BUG();
        for (;;);
diff -r 35b2c54f59d5 -r 124f7a7f5f84 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Tue Dec 11 10:14:11 2007 -0700
+++ b/xen/arch/ia64/xen/domain.c        Tue Dec 11 10:22:37 2007 -0700
@@ -2207,10 +2207,12 @@ void machine_halt(void)
 void machine_halt(void)
 {
        console_start_sync();
-       if (running_on_sim)
-               printk ("machine_halt called.  spinning...\n");
-       else
-               cpu_halt();
+
+#ifdef CONFIG_SMP
+       smp_send_stop();
+#endif
+
+       printk ("machine_halt called.  spinning...\n");
        while(1);
 }
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.