All of lore.kernel.org
 help / color / mirror / Atom feed
* Shutdown questions / correct way of sending sysrq to Linux domains?
@ 2004-12-03 14:30 Matthew Bloch
  2004-12-04 20:51 ` Keir Fraser
  2004-12-04 22:12 ` Nuno Silva
  0 siblings, 2 replies; 3+ messages in thread
From: Matthew Bloch @ 2004-12-03 14:30 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 916 bytes --]

Hi there,

I just wanted to check my approach before do a patch that the developers 
won't like the smell of.  I'm intending to create a method of sending 
emergency sysrqs from Domain 0 to other domains (patch so far attached).

This is a useful idea as it allows safe rescues of improperly setup 
guest systems, and could be a useful backstop for "xm shutdown" after a 
particular timeout (similar to what we do when we want to shut down a 
system full of recalcitrant user-mode linux processes that don't do the 
right thing on a ctrl+alt+delete).

Does the attached method make sense, i.e. commandeering CMSG_SHUTDOWN 
subtypes 33-127 to mean "call the sysrq handler"?  If so the only 
question is how to glue it into the user-space tools: "xm sysrq S" ?  or 
the counter-intuitive "xm shutdown --sysrq S"?  If the developers can 
state their preference I'll make a proper job of it.

cheers,

-- 
Matthew Bloch

[-- Attachment #2: sysrq-patch --]
[-- Type: text/plain, Size: 1805 bytes --]

diff -urN xen-2.0/xen/include/public/io/domain_controller.h xen-2.0-sysrq/xen/include/public/io/domain_controller.h
--- xen-2.0/xen/include/public/io/domain_controller.h	2004-11-17 22:51:47.000000000 +0000
+++ xen-2.0-sysrq/xen/include/public/io/domain_controller.h	2004-12-03 13:39:43.000000000 +0000
@@ -555,7 +555,8 @@
 #define CMSG_SHUTDOWN_REBOOT    1   /* Clean shutdown (SHUTDOWN_reboot).     */
 #define CMSG_SHUTDOWN_SUSPEND   2   /* Create suspend info, then             */
                                     /* SHUTDOWN_suspend.                     */
-
+#define CMSG_SHUTDOWN_SYSRQ_MIN 33  /* Lowest subtype that will be interpreted */
+#define CMSG_SHUTDOWN_SYSRQ_MAX 127 /* as an ASCII sysrq handler (and highest) */
 
 /******************************************************************************
  * MEMORY CONTROLS
diff -urN xen-2.0/linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c xen-2.0-sysrq/linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c
--- xen-2.0/linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c	2004-11-17 22:51:41.000000000 +0000
+++ xen-2.0-sysrq/linux-2.6.9-xen-sparse/arch/xen/kernel/reboot.c	2004-12-03 14:03:58.000000000 +0000
@@ -8,6 +8,7 @@
 #include <linux/unistd.h>
 #include <linux/module.h>
 #include <linux/reboot.h>
+#include <linux/sysrq.h>
 #include <asm/irq.h>
 #include <asm/mmu_context.h>
 #include <asm-xen/ctrl_if.h>
@@ -226,6 +227,15 @@
         shutting_down = msg->subtype;
         schedule_work(&shutdown_work);
     }
+    else if (msg->subtype >= CMSG_SHUTDOWN_SYSRQ_MIN &&
+             msg->subtype <= CMSG_SHUTDOWN_SYSRQ_MAX)
+    {
+#ifdef CONFIG_MAGIC_SYSRQ
+        handle_sysrq(msg->subtype, NULL, NULL);
+#else
+        printk("sysrq not supported\n");
+#endif
+    }
     else
     {
         printk("Ignore spurious shutdown request\n");

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-12-04 22:12 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-03 14:30 Shutdown questions / correct way of sending sysrq to Linux domains? Matthew Bloch
2004-12-04 20:51 ` Keir Fraser
2004-12-04 22:12 ` Nuno Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.