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

RE: [Xen-devel] [PATCH] break-in to Xen 1) when gdb is invoked and 2) ^C

To: "'Keir Fraser'" <keir.fraser@xxxxxxxxxxxxx>
Subject: RE: [Xen-devel] [PATCH] break-in to Xen 1) when gdb is invoked and 2) ^C on gdb
From: Caz Yokoyama <cazyokoyama@xxxxxxxxx>
Date: Mon, 17 Aug 2009 13:56:38 -0700
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 17 Aug 2009 13:57:38 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:references:subject :date:message-id:mime-version:content-type:x-mailer:in-reply-to :thread-index:x-mimeole; bh=BAiauetd2xFkBmWdyE1VF1/7j6Sepl6yF8qLSalcPWg=; b=fL299KBA3/SjrNQLlo+b+szgvuK2T1w2BIdUNNc+QLF5EKMx9Uu568SrSGqPUxADTw 7r83fSW9EoBOQ1oMnSNCtT4x908/g0O8D2pLPtkt9UOB6DwQVn0DDWJC4n+4J/fMU4bV rx2eK4D/wScKegEvBWFmDeD8nfuJwZ6TdMbU4=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:references:subject:date:message-id:mime-version :content-type:x-mailer:in-reply-to:thread-index:x-mimeole; b=KKKMGXmY6SeeQc4WyS3QIaTxE8I2PjcFhyiXd5I3gXEgDjgEzU2lzY2IRXJnXIFFNs Vh+ZmcjRlbEGM4LkQR0xCVpjHCv8FS0M86Q6xIGfEmYtc966X8q53IpUOgCgab2FHUug qciOq2/icwGqrXpLkuJPoNpS9a/LuPxi2X+3E=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to:
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>
References: <AD56576413E940DFB74C3658048D1BFA@xpjpn> <C6A97FFA.11F68%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acoa8r/5gPp6Qi5vSqWmE3+LHCGKRQAL+ch1AAhh8kAAAy/QtgAPyLvAAAwxkAAACdKF+gAqBCLAACJmbeAAmDWbsA==
Hello Keir,
This patch makes gdb break-in to Xen when 1) it is invoked and 2) ^C is
typed on gdb or clicking interrupt on ddd.
diff -r 8b0f1f37e145 xen/common/keyhandler.c
--- a/xen/common/keyhandler.c   Sun Aug 16 08:46:08 2009 +0100
+++ b/xen/common/keyhandler.c   Mon Aug 17 10:07:04 2009 -0700
@@ -397,7 +397,11 @@
     .desc = "print all diagnostics"
 };
 
+#if 1
+void do_debug_key(unsigned char key, struct cpu_user_regs *regs)
+#else
 static void do_debug_key(unsigned char key, struct cpu_user_regs *regs)
+#endif
 {
     printk("'%c' pressed -> trapping into debugger\n", key);
     (void)debugger_trap_fatal(0xf001, regs);
diff -r 8b0f1f37e145 xen/drivers/char/ns16550.c
--- a/xen/drivers/char/ns16550.c        Sun Aug 16 08:46:08 2009 +0100
+++ b/xen/drivers/char/ns16550.c        Mon Aug 17 10:07:04 2009 -0700
@@ -16,6 +16,7 @@
 #include <xen/serial.h>
 #include <xen/iocap.h>
 #include <asm/io.h>
+#include <xen/keyhandler.h>
 
 /*
  * Configure serial port with a string:
@@ -125,10 +126,16 @@
 {
     struct serial_port *port = dev_id;
     struct ns16550 *uart = port->uart;
+    char lsr;
 
     while ( !(ns_read_reg(uart, IIR) & IIR_NOINT) )
     {
-        char lsr = ns_read_reg(uart, LSR);
+        lsr = ns_read_reg(uart, LSR);
+#if 1
+        if ( lsr & LSR_BI ) { /* on BREAK */
+            do_debug_key('g', regs); /* g is meaningless */
+        }
+#endif
         if ( lsr & LSR_THRE )
             serial_tx_interrupt(port, regs);
         if ( lsr & LSR_DR )
diff -r 8b0f1f37e145 xen/include/xen/keyhandler.h
--- a/xen/include/xen/keyhandler.h      Sun Aug 16 08:46:08 2009 +0100
+++ b/xen/include/xen/keyhandler.h      Mon Aug 17 10:07:04 2009 -0700
@@ -40,6 +40,10 @@
     char *desc;
 };
 
+#if 1
+extern void do_debug_key(unsigned char key, struct cpu_user_regs *regs);
+#endif
+
 /* Initialize keytable with default handlers */
 extern void initialize_keytable(void);

Xen expects BREAK and 'g' which is the same sequence of the one on Linux
kernel. I submitted a patch which sends BREAK and 'g' to gdb-patches on
08/07, but it is not approved yet.
You can't use ssplitd/nsplitd because it does not pass BREAK. Therefore, you
lose console output and corresponding ^A^A^A functions. My associated lines
for the patch are
menu.lst
        kernel /boot/xen-3.5-unstable.gz com1=115200,8n1 gdb=com1 
.gdbinit
        set remotebreak BREAK-g
        target remote /dev/ttyS0
 ddd --gdb --debugger "/home/caz/lightfleet/kgdb/gdb-KgdbLight/gdb/gdb"
xen/xen-syms
-caz

Attachment: BREAK-g.patch
Description: Binary data

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