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] Fix up some issues I found when porting PPC to the new c

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Fix up some issues I found when porting PPC to the new common gdb stub code:
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 03 Mar 2006 14:26:08 +0000
Delivery-date: Fri, 03 Mar 2006 14:27:13 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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 ec7802acc8c94a1b886f4dc48ef3035cc3b1b156
# Parent  f3661f9a95dd183bd20b05494d99b7bc0e2d27c0
Fix up some issues I found when porting PPC to the new common gdb stub code:
- cosmetic changes in the messages printed
- 'flags' must always be unsigned long.
- explicitly calling initialize_gdb() is not difficult. For x86 and ia64 I 
placed this call immediately before do_initcalls(), since that's where it's 
being called from now so we know it's safe. Architecture people can move it 
earlier as appropriate.
- I don't understand all these ASSERT(!local_irq_is_enabled()) statements, 
sometimes bracketing a single call like receive_command(). How exactly would 
receive_command() manage to re-enable irqs? Also, a failing ASSERT would just 
call into the stub again anways...
- initialize_gdb() was overcomplicated. serial_parse_handle() already handles 
the parsing for us, and there's no need to panic there.

Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>

diff -r f3661f9a95dd -r ec7802acc8c9 xen/arch/ia64/xen/xensetup.c
--- a/xen/arch/ia64/xen/xensetup.c      Fri Mar  3 09:46:06 2006
+++ b/xen/arch/ia64/xen/xensetup.c      Fri Mar  3 09:53:58 2006
@@ -12,7 +12,7 @@
 #include <xen/sched.h>
 #include <xen/mm.h>
 #include <public/version.h>
-//#include <xen/delay.h>
+#include <xen/gdbstub.h>
 #include <xen/compile.h>
 #include <xen/console.h>
 #include <xen/serial.h>
@@ -359,6 +359,8 @@
     printk("Brought up %ld CPUs\n", (long)num_online_cpus());
     smp_cpus_done(max_cpus);
 #endif
+
+    initialise_gdb(); /* could be moved earlier */
 
     do_initcalls();
 printk("About to call sort_main_extable()\n");
diff -r f3661f9a95dd -r ec7802acc8c9 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      Fri Mar  3 09:46:06 2006
+++ b/xen/arch/x86/setup.c      Fri Mar  3 09:53:58 2006
@@ -13,6 +13,7 @@
 #include <xen/multiboot.h>
 #include <xen/domain_page.h>
 #include <xen/compile.h>
+#include <xen/gdbstub.h>
 #include <public/version.h>
 #include <asm/bitops.h>
 #include <asm/smp.h>
@@ -479,6 +480,8 @@
     printk("Brought up %ld CPUs\n", (long)num_online_cpus());
     smp_cpus_done(max_cpus);
 
+    initialise_gdb(); /* could be moved earlier */
+
     do_initcalls();
 
     schedulers_start();
diff -r f3661f9a95dd -r ec7802acc8c9 xen/common/gdbstub.c
--- a/xen/common/gdbstub.c      Fri Mar  3 09:46:06 2006
+++ b/xen/common/gdbstub.c      Fri Mar  3 09:53:58 2006
@@ -376,7 +376,6 @@
         break;
     case 'g': /* Read registers */
         gdb_arch_read_reg_array(regs, ctx);
-        ASSERT(!local_irq_is_enabled());
         break;
     case 'G': /* Write registers */
         gdb_arch_write_reg_array(regs, ctx->in_buf + 1, ctx);
@@ -395,7 +394,6 @@
             return 0;
         }
         gdb_cmd_read_mem(addr, length, ctx);
-        ASSERT(!local_irq_is_enabled());
         break;
     case 'M': /* Write memory */
         addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
@@ -477,7 +475,7 @@
 {
     int resume = 0;
     int r;
-    unsigned flags;
+    unsigned long flags;
 
     if ( gdb_ctx->serhnd < 0 )
     {
@@ -506,7 +504,7 @@
 
     if ( !gdb_ctx->connected )
     {
-        printk("GDB connection activated\n");
+        printk("GDB connection activated.\n");
         gdb_arch_print_state(regs);
         gdb_ctx->connected = 1;
     }
@@ -522,7 +520,7 @@
 
     /* Shouldn't really do this, but otherwise we stop for no
        obvious reason, which is Bad */
-    printk("Waiting for GDB to attach to Gdb\n");
+    printk("Waiting for GDB to attach...\n");
 
     gdb_arch_enter(regs);
     gdb_ctx->signum = gdb_arch_signal_num(regs, cookie);
@@ -535,9 +533,7 @@
 
     while ( resume == 0 )
     {
-        ASSERT(!local_irq_is_enabled());
         r = receive_command(gdb_ctx);
-        ASSERT(!local_irq_is_enabled());
         if ( r < 0 )
         {
             dbg_printk("GDB disappeared, trying to resume Xen...\n");
@@ -545,9 +541,7 @@
         }
         else
         {
-            ASSERT(!local_irq_is_enabled());
             resume = process_command(regs, gdb_ctx);
-            ASSERT(!local_irq_is_enabled());
         }
     }
 
@@ -561,27 +555,13 @@
     return 0;
 }
 
-/*
- * initialization
- * XXX TODO
- *     This should be an explicit call from architecture code.               
- *     initcall is far too late for some early debugging, and only the 
- *     architecture code knows when this call can be made.          
- */
-static int
-initialize_gdb(void)
-{
-    if ( !strcmp(opt_gdb, "none") )
-        return 0;
+void
+initialise_gdb(void)
+{
     gdb_ctx->serhnd = serial_parse_handle(opt_gdb);
-    if ( gdb_ctx->serhnd == -1 )
-        panic("Can't parse %s as GDB serial info.\n", opt_gdb);
-
-    printk("Gdb initialised.\n");
-    return 0;
-}
-
-__initcall(initialize_gdb);
+    if ( gdb_ctx->serhnd != -1 )
+        printk("GDB stub initialised.\n");
+}
 
 /*
  * Local variables:
diff -r f3661f9a95dd -r ec7802acc8c9 xen/include/xen/gdbstub.h
--- a/xen/include/xen/gdbstub.h Fri Mar  3 09:46:06 2006
+++ b/xen/include/xen/gdbstub.h Fri Mar  3 09:53:58 2006
@@ -20,6 +20,8 @@
 
 #ifndef __XEN_GDBSTUB_H__
 #define __XEN_GDBSTUB_H__
+
+#ifdef CRASH_DEBUG
 
 /* value <-> char (de)serialzers for arch specific gdb backends */
 char hex2char(unsigned long x); 
@@ -84,6 +86,14 @@
 #define SIGALRM         14
 #define SIGTERM         15
 
+void initialise_gdb(void);
+
+#else
+
+#define initialise_gdb() ((void)0)
+
+#endif
+
 #endif /* __XEN_GDBSTUB_H__ */
 
 /*

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Fix up some issues I found when porting PPC to the new common gdb stub code:, Xen patchbot -unstable <=