WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [XEN] Clean up shutdown handling and igno

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [XEN] Clean up shutdown handling and ignore opt_noreboot if dom0
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 07 Aug 2006 15:50:21 +0000
Delivery-date: Mon, 07 Aug 2006 08:53:02 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 16aa4b417c6b97c9378b4b44df57fc3bd3b1d2be
# Parent  353404fe850c40569d04972ccc8929dc9948b9d8
[XEN] Clean up shutdown handling and ignore opt_noreboot if dom0
shuts down cleanly. The option is intended only to retain information
on the local console in case of a crash.

Based on a patch from Muli Ben-Yehuda <muli@xxxxxxxxxx>

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/include/xen/reboot.h          |    8 ----
 xen/arch/ia64/linux-xen/setup.c   |    2 -
 xen/arch/powerpc/domain.c         |    2 -
 xen/arch/x86/genapic/es7000plat.c |    1 
 xen/arch/x86/shutdown.c           |   17 ++-------
 xen/arch/x86/traps.c              |    2 -
 xen/arch/x86/x86_32/traps.c       |    2 -
 xen/arch/x86/x86_64/traps.c       |    2 -
 xen/common/Makefile               |    1 
 xen/common/domain.c               |   27 +--------------
 xen/common/keyhandler.c           |    2 -
 xen/common/shutdown.c             |   66 ++++++++++++++++++++++++++++++++++++++
 xen/drivers/char/console.c        |   19 ++++++++--
 xen/drivers/char/serial.c         |    1 
 xen/include/xen/shutdown.h        |   13 +++++++
 15 files changed, 107 insertions(+), 58 deletions(-)

diff -r 353404fe850c -r 16aa4b417c6b xen/arch/ia64/linux-xen/setup.c
--- a/xen/arch/ia64/linux-xen/setup.c   Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/ia64/linux-xen/setup.c   Mon Aug 07 15:35:06 2006 +0100
@@ -31,7 +31,7 @@
 #include <linux/console.h>
 #include <linux/delay.h>
 #include <linux/kernel.h>
-#include <linux/reboot.h>
+#include <linux/shutdown.h>
 #include <linux/sched.h>
 #include <linux/seq_file.h>
 #include <linux/string.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/arch/powerpc/domain.c
--- a/xen/arch/powerpc/domain.c Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/powerpc/domain.c Mon Aug 07 15:35:06 2006 +0100
@@ -26,7 +26,7 @@
 #include <xen/serial.h>
 #include <xen/domain.h>
 #include <xen/console.h>
-#include <xen/reboot.h>
+#include <xen/shutdown.h>
 #include <asm/htab.h>
 #include <asm/current.h>
 #include <asm/hcalls.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/arch/x86/genapic/es7000plat.c
--- a/xen/arch/x86/genapic/es7000plat.c Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/x86/genapic/es7000plat.c Mon Aug 07 15:35:06 2006 +0100
@@ -31,7 +31,6 @@
 #include <xen/string.h>
 #include <xen/spinlock.h>
 #include <xen/errno.h>
-#include <xen/reboot.h>
 #include <xen/init.h>
 #include <xen/acpi.h>
 #include <asm/io.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/arch/x86/shutdown.c
--- a/xen/arch/x86/shutdown.c   Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/x86/shutdown.c   Mon Aug 07 15:35:06 2006 +0100
@@ -11,19 +11,16 @@
 #include <xen/smp.h>
 #include <xen/delay.h>
 #include <xen/dmi.h>
+#include <xen/irq.h>
+#include <xen/console.h>
+#include <xen/shutdown.h>
+#include <asm/msr.h>
 #include <asm/regs.h>
 #include <asm/mc146818rtc.h>
 #include <asm/system.h>
 #include <asm/io.h>
 #include <asm/processor.h>
 #include <asm/mpspec.h>
-#include <xen/irq.h>
-#include <xen/console.h>
-#include <asm/msr.h>
-
-/* opt_noreboot: If true, machine will need manual reset on error. */
-static int opt_noreboot = 0;
-boolean_param("noreboot", opt_noreboot);
 
 /* reboot_str: comma-separated list of reboot options. */
 static char __initdata reboot_str[10] = "";
@@ -204,12 +201,6 @@ void machine_restart(char * __unused)
 {
     int i;
 
-    if ( opt_noreboot )
-    {
-        printk("Reboot disabled on cmdline: require manual reset\n");
-        machine_halt();
-    }
-
     watchdog_disable();
     console_start_sync();
 
diff -r 353404fe850c -r 16aa4b417c6b xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c      Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/x86/traps.c      Mon Aug 07 15:35:06 2006 +0100
@@ -32,7 +32,7 @@
 #include <xen/errno.h>
 #include <xen/mm.h>
 #include <xen/console.h>
-#include <xen/reboot.h>
+#include <xen/shutdown.h>
 #include <asm/regs.h>
 #include <xen/delay.h>
 #include <xen/event.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/arch/x86/x86_32/traps.c
--- a/xen/arch/x86/x86_32/traps.c       Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/x86/x86_32/traps.c       Mon Aug 07 15:35:06 2006 +0100
@@ -9,7 +9,7 @@
 #include <xen/mm.h>
 #include <xen/irq.h>
 #include <xen/symbols.h>
-#include <xen/reboot.h>
+#include <xen/shutdown.h>
 #include <xen/nmi.h>
 #include <asm/current.h>
 #include <asm/flushtlb.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/arch/x86/x86_64/traps.c
--- a/xen/arch/x86/x86_64/traps.c       Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/arch/x86/x86_64/traps.c       Mon Aug 07 15:35:06 2006 +0100
@@ -10,7 +10,7 @@
 #include <xen/symbols.h>
 #include <xen/console.h>
 #include <xen/sched.h>
-#include <xen/reboot.h>
+#include <xen/shutdown.h>
 #include <xen/nmi.h>
 #include <asm/current.h>
 #include <asm/flushtlb.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/common/Makefile
--- a/xen/common/Makefile       Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/common/Makefile       Mon Aug 07 15:35:06 2006 +0100
@@ -16,6 +16,7 @@ obj-y += sched_credit.o
 obj-y += sched_credit.o
 obj-y += sched_sedf.o
 obj-y += schedule.o
+obj-y += shutdown.o
 obj-y += softirq.o
 obj-y += string.o
 obj-y += symbols.o
diff -r 353404fe850c -r 16aa4b417c6b xen/common/domain.c
--- a/xen/common/domain.c       Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/common/domain.c       Mon Aug 07 15:35:06 2006 +0100
@@ -20,6 +20,7 @@
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
 #include <xen/delay.h>
+#include <xen/shutdown.h>
 #include <asm/debugger.h>
 #include <public/dom0_ops.h>
 #include <public/sched.h>
@@ -282,36 +283,12 @@ static __init int domain_shutdown_finali
 }
 __initcall(domain_shutdown_finaliser_init);
 
-
 void domain_shutdown(struct domain *d, u8 reason)
 {
     struct vcpu *v;
 
     if ( d->domain_id == 0 )
-    {
-        extern void machine_restart(char *);
-        extern void machine_halt(void);
-
-        debugger_trap_immediate();
-
-        if ( reason == SHUTDOWN_poweroff ) 
-        {
-            printk("Domain 0 halted: halting machine.\n");
-            machine_halt();
-        }
-        else if ( reason == SHUTDOWN_crash )
-        {
-            printk("Domain 0 crashed: rebooting machine in 5 seconds.\n");
-            watchdog_disable();
-            mdelay(5000);
-            machine_restart(0);
-        }
-        else
-        {
-            printk("Domain 0 shutdown: rebooting machine.\n");
-            machine_restart(0);
-        }
-    }
+        dom0_shutdown(reason);
 
     /* Mark the domain as shutting down. */
     d->shutdown_code = reason;
diff -r 353404fe850c -r 16aa4b417c6b xen/common/keyhandler.c
--- a/xen/common/keyhandler.c   Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/common/keyhandler.c   Mon Aug 07 15:35:06 2006 +0100
@@ -4,7 +4,7 @@
 
 #include <asm/regs.h>
 #include <xen/keyhandler.h> 
-#include <xen/reboot.h>
+#include <xen/shutdown.h>
 #include <xen/event.h>
 #include <xen/console.h>
 #include <xen/serial.h>
diff -r 353404fe850c -r 16aa4b417c6b xen/drivers/char/console.c
--- a/xen/drivers/char/console.c        Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/drivers/char/console.c        Mon Aug 07 15:35:06 2006 +0100
@@ -21,6 +21,7 @@
 #include <xen/mm.h>
 #include <xen/delay.h>
 #include <xen/guest_access.h>
+#include <xen/shutdown.h>
 #include <asm/current.h>
 #include <asm/debugger.h>
 #include <asm/io.h>
@@ -730,14 +731,24 @@ void panic(const char *fmt, ...)
     printk("Panic on CPU %d:\n", smp_processor_id());
     printk(buf);
     printk("****************************************\n\n");
-    printk("Reboot in five seconds...\n");
+    if ( opt_noreboot )
+        printk("Manual reset required ('noreboot' specified)\n");
+    else
+        printk("Reboot in five seconds...\n");
     spin_unlock_irqrestore(&lock, flags);
 
     debugger_trap_immediate();
 
-    watchdog_disable();
-    mdelay(5000);
-    machine_restart(0);
+    if ( opt_noreboot )
+    {
+        machine_halt();
+    }
+    else
+    {
+        watchdog_disable();
+        mdelay(5000);
+        machine_restart(NULL);
+    }
 }
 
 void __bug(char *file, int line)
diff -r 353404fe850c -r 16aa4b417c6b xen/drivers/char/serial.c
--- a/xen/drivers/char/serial.c Mon Aug 07 11:59:31 2006 +0100
+++ b/xen/drivers/char/serial.c Mon Aug 07 15:35:06 2006 +0100
@@ -11,7 +11,6 @@
 #include <xen/init.h>
 #include <xen/irq.h>
 #include <xen/keyhandler.h> 
-#include <xen/reboot.h>
 #include <xen/sched.h>
 #include <xen/serial.h>
 
diff -r 353404fe850c -r 16aa4b417c6b xen/common/shutdown.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/shutdown.c     Mon Aug 07 15:35:06 2006 +0100
@@ -0,0 +1,66 @@
+#include <xen/config.h>
+#include <xen/init.h>
+#include <xen/lib.h>
+#include <xen/sched.h>
+#include <xen/domain.h>
+#include <xen/delay.h>
+#include <xen/shutdown.h>
+#include <asm/debugger.h>
+#include <public/sched.h>
+
+/* opt_noreboot: If true, machine will need manual reset on error. */
+int opt_noreboot;
+boolean_param("noreboot", opt_noreboot);
+
+static void maybe_reboot(void)
+{
+    if ( opt_noreboot )
+    {
+        printk("'noreboot' set - not rebooting.\n");
+        machine_halt();
+    }
+    else
+    {
+        printk("rebooting machine in 5 seconds.\n");
+        watchdog_disable();
+        mdelay(5000);
+        machine_restart(NULL);
+    }
+}
+
+void dom0_shutdown(u8 reason)
+{
+    debugger_trap_immediate();
+
+    switch ( reason )
+    {
+    case SHUTDOWN_poweroff:
+    {
+        printk("Domain 0 halted: halting machine.\n");
+        machine_halt();
+        break; /* not reached */
+    }
+
+    case SHUTDOWN_crash:
+    {
+        printk("Domain 0 crashed: ");
+        maybe_reboot();
+        break; /* not reached */
+    }
+
+    case SHUTDOWN_reboot:
+    {
+        printk("Domain 0 shutdown: rebooting machine.\n");
+        machine_restart(NULL);
+        break; /* not reached */
+    }
+
+    default:
+    {
+        printk("Domain 0 shutdown (unknown reason %u): ", reason);
+        maybe_reboot();
+        break; /* not reached */
+    }
+    }
+}  
+
diff -r 353404fe850c -r 16aa4b417c6b xen/include/xen/shutdown.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/xen/shutdown.h        Mon Aug 07 15:35:06 2006 +0100
@@ -0,0 +1,13 @@
+#ifndef __XEN_SHUTDOWN_H__
+#define __XEN_SHUTDOWN_H__
+
+/* opt_noreboot: If true, machine will need manual reset on error. */
+extern int opt_noreboot;
+
+void dom0_shutdown(u8 reason);
+
+void machine_restart(char *cmd);
+void machine_halt(void);
+void machine_power_off(void);
+
+#endif /* __XEN_SHUTDOWN_H__ */
diff -r 353404fe850c -r 16aa4b417c6b xen/include/xen/reboot.h
--- a/xen/include/xen/reboot.h  Mon Aug 07 11:59:31 2006 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-#ifndef _LINUX_REBOOT_H
-#define _LINUX_REBOOT_H
-
-extern void machine_restart(char *cmd);
-extern void machine_halt(void);
-extern void machine_power_off(void);
-
-#endif /* _LINUX_REBOOT_H */

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [XEN] Clean up shutdown handling and ignore opt_noreboot if dom0, Xen patchbot-unstable <=