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-devel

[Xen-devel] [PATCH] reduce side effects of handling '*' debug key

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] reduce side effects of handling '*' debug key
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Tue, 14 Dec 2010 14:46:23 +0000
Delivery-date: Tue, 14 Dec 2010 06:47:21 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
NMI watchdog should be suppressed, and softirqs should be handled at
least in the non-IRQ handler portion (they obviously must not be
processed in IRQ context).

The (slightly more involved) 4.0 variant of this patch is also
attached.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>

--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -444,16 +444,21 @@ static void run_all_nonirq_keyhandlers(u
     struct keyhandler *h;
     int k;
 
-    console_start_log_everything();
+    watchdog_disable();
+    console_start_sync();
+
     for ( k = 0; k < ARRAY_SIZE(key_table); k++ )
     {
+        process_pending_softirqs();
         h = key_table[k];
         if ( (h == NULL) || !h->diagnostic || h->irq_callback )
             continue;
         printk("[%c: %s]\n", k, h->desc);
         (*h->u.fn)(k);
     }
-    console_end_log_everything();
+
+    console_end_sync();
+    watchdog_enable();
 }
 
 static DECLARE_TASKLET(run_all_keyhandlers_tasklet,
@@ -464,10 +469,12 @@ static void run_all_keyhandlers(unsigned
     struct keyhandler *h;
     int k;
 
+    watchdog_disable();
+    console_start_sync();
+
     printk("'%c' pressed -> firing all diagnostic keyhandlers\n", key);
 
     /* Fire all the IRQ-context diangostic keyhandlers now */
-    console_start_log_everything();
     for ( k = 0; k < ARRAY_SIZE(key_table); k++ )
     {
         h = key_table[k];
@@ -476,7 +483,9 @@ static void run_all_keyhandlers(unsigned
         printk("[%c: %s]\n", k, h->desc);
         (*h->u.irq_fn)(k, regs);
     }
-    console_end_log_everything();
+
+    console_end_sync();
+    watchdog_enable();
 
     /* Trigger the others from a tasklet in non-IRQ context */
     tasklet_schedule(&run_all_keyhandlers_tasklet);



Attachment: keyhandler-relax.patch
Description: Text document

Attachment: 4.0-keyhandler-relax.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>