public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: George Anzinger <george@mvista.com>
To: "Amit S. Kale" <amitkale@emsyssoft.com>
Cc: Tom Rini <trini@kernel.crashing.org>,
	kernel list <linux-kernel@vger.kernel.org>,
	Pavel Machek <pavel@suse.cz>,
	kgdb-bugreport@lists.sourceforge.net
Subject: Re: [Kgdb-bugreport] [PATCH][2/3] Update CVS KGDB's have kgdb_{schedule,process}_breakpoint
Date: Thu, 26 Feb 2004 15:19:40 -0800	[thread overview]
Message-ID: <403E7F0C.6000009@mvista.com> (raw)
In-Reply-To: <200402261300.34911.amitkale@emsyssoft.com>

Amit S. Kale wrote:
> On Thursday 26 Feb 2004 3:13 am, Tom Rini wrote:
> 
>>The following adds, and then makes use of kgdb_process_breakpoint /
>>kgdb_schedule_breakpoint.  Using it i kgdb_8250.c isn't strictly needed,
>>but it isn't wrong either.
> 
> 
> That makes 8250 response it a _bit_ slower. A user will notice when kgdb 
> doesn't respond within a millisecond of pressing Ctrl+C :-)

Hm...  I have been wondering if it might not be a good idea to put some comments 
to the user at or around the breakpoint.  Possibly we might want to tell the 
user about where the info files are or some such.  This would then come up on 
his screen when the source code at the breakpoint is displayed.

comments...

-g
> 
> OK to checkin.
> -Amit
> 
> 
>># This is a BitKeeper generated patch for the following project:
>># Project Name: Linux kernel tree
>># This patch format is intended for GNU patch command version 2.5 or
>>higher. # This patch includes the following deltas:
>>#	           ChangeSet	1.1663  -> 1.1664
>>#	arch/i386/kernel/irq.c	1.48    -> 1.49
>>#	drivers/net/kgdb_eth.c	1.2     -> 1.3
>>#	arch/x86_64/kernel/irq.c	1.21    -> 1.22
>>#	drivers/serial/kgdb_8250.c	1.3     -> 1.4
>>#	       kernel/kgdb.c	1.3     -> 1.4
>>#	arch/ppc/kernel/irq.c	1.36    -> 1.37
>>#	include/linux/kgdb.h	1.3     -> 1.4
>>#
>># The following is the BitKeeper ChangeSet Log
>># --------------------------------------------
>># 04/02/25	trini@kernel.crashing.org	1.1664
>># process_breakpoint/schedule_breakpoint.
>># --------------------------------------------
>>#
>>diff -Nru a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
>>--- a/arch/i386/kernel/irq.c	Wed Feb 25 14:21:32 2004
>>+++ b/arch/i386/kernel/irq.c	Wed Feb 25 14:21:32 2004
>>@@ -34,6 +34,7 @@
>> #include <linux/proc_fs.h>
>> #include <linux/seq_file.h>
>> #include <linux/kallsyms.h>
>>+#include <linux/kgdb.h>
>>
>> #include <asm/atomic.h>
>> #include <asm/io.h>
>>@@ -507,6 +508,8 @@
>> 	spin_unlock(&desc->lock);
>>
>> 	irq_exit();
>>+
>>+	kgdb_process_breakpoint();
>>
>> 	return 1;
>> }
>>diff -Nru a/arch/ppc/kernel/irq.c b/arch/ppc/kernel/irq.c
>>--- a/arch/ppc/kernel/irq.c	Wed Feb 25 14:21:32 2004
>>+++ b/arch/ppc/kernel/irq.c	Wed Feb 25 14:21:32 2004
>>@@ -46,6 +46,7 @@
>> #include <linux/random.h>
>> #include <linux/seq_file.h>
>> #include <linux/cpumask.h>
>>+#include <linux/kgdb.h>
>>
>> #include <asm/uaccess.h>
>> #include <asm/bitops.h>
>>@@ -536,7 +537,9 @@
>> 	if (irq != -2 && first)
>> 		/* That's not SMP safe ... but who cares ? */
>> 		ppc_spurious_interrupts++;
>>-        irq_exit();
>>+	irq_exit();
>>+
>>+	kgdb_process_breakpoint();
>> }
>>
>> unsigned long probe_irq_on (void)
>>diff -Nru a/arch/x86_64/kernel/irq.c b/arch/x86_64/kernel/irq.c
>>--- a/arch/x86_64/kernel/irq.c	Wed Feb 25 14:21:32 2004
>>+++ b/arch/x86_64/kernel/irq.c	Wed Feb 25 14:21:32 2004
>>@@ -405,6 +405,8 @@
>> 	spin_unlock(&desc->lock);
>>
>> 	irq_exit();
>>+
>>+	kgdb_process_breakpoint();
>> 	return 1;
>> }
>>
>>diff -Nru a/drivers/net/kgdb_eth.c b/drivers/net/kgdb_eth.c
>>--- a/drivers/net/kgdb_eth.c	Wed Feb 25 14:21:32 2004
>>+++ b/drivers/net/kgdb_eth.c	Wed Feb 25 14:21:32 2004
>>@@ -60,7 +60,6 @@
>> static atomic_t in_count;
>> int kgdboe = 0;			/* Default to tty mode */
>>
>>-extern void breakpoint(void);
>> static void rx_hook(struct netpoll *np, int port, char *msg, int len);
>>
>> static struct netpoll np = {
>>@@ -106,14 +105,12 @@
>>
>> 	np->remote_port = port;
>>
>>-	/* Is this gdb trying to attach? */
>>-	if (!netpoll_trap() && len == 8 && !strncmp(msg, "$Hc-1#09", 8))
>>-		breakpoint();
>>+	/* Is this gdb trying to attach (!kgdb_connected) or break in
>>+	 * (msg[0] == 3) ? */
>>+	if (!netpoll_trap() && (!kgdb_connected || msg[0] == 3))
>>+		 kgdb_schedule_breakpoint();
>>
>> 	for (i = 0; i < len; i++) {
>>-		if (msg[i] == 3)
>>-			breakpoint();
>>-
>> 		if (atomic_read(&in_count) >= IN_BUF_SIZE) {
>> 			/* buffer overflow, clear it */
>> 			in_head = in_tail = 0;
>>diff -Nru a/drivers/serial/kgdb_8250.c b/drivers/serial/kgdb_8250.c
>>--- a/drivers/serial/kgdb_8250.c	Wed Feb 25 14:21:32 2004
>>+++ b/drivers/serial/kgdb_8250.c	Wed Feb 25 14:21:32 2004
>>@@ -248,7 +248,7 @@
>>
>> 	/* If we get an interrupt, then KGDB is trying to connect. */
>> 	if (!kgdb_connected) {
>>-		breakpoint();
>>+		kgdb_schedule_breakpoint();
>> 		return IRQ_HANDLED;
>> 	}
>>
>>diff -Nru a/include/linux/kgdb.h b/include/linux/kgdb.h
>>--- a/include/linux/kgdb.h	Wed Feb 25 14:21:32 2004
>>+++ b/include/linux/kgdb.h	Wed Feb 25 14:21:32 2004
>>@@ -11,8 +11,22 @@
>> #include <asm/atomic.h>
>> #include <linux/debugger.h>
>>
>>+/*
>>+ * This file should not include ANY others.  This makes it usable
>>+ * most anywhere without the fear of include order or inclusion.
>>+ * TODO: Make it so!
>>+ *
>>+ * This file may be included all the time.  It is only active if
>>+ * CONFIG_KGDB is defined, otherwise it stubs out all the macros
>>+ * and entry points.
>>+ */
>>+
>>+#if defined(CONFIG_KGDB) && !defined(__ASSEMBLY__)
>> /* To enter the debugger explicitly. */
>>-void breakpoint(void);
>>+extern void breakpoint(void);
>>+extern void kgdb_schedule_breakpoint(void);
>>+extern void kgdb_process_breakpoint(void);
>>+extern volatile int kgdb_connected;
>>
>> #ifndef KGDB_MAX_NO_CPUS
>> #if CONFIG_NR_CPUS > 8
>>@@ -112,4 +126,7 @@
>> char *kgdb_hex2mem(char *buf, char *mem, int count);
>> int kgdb_get_mem(char *addr, unsigned char *buf, int count);
>>
>>+#else
>>+#define kgdb_process_breakpoint()      do {} while(0)
>>+#endif /* KGDB && !__ASSEMBLY__ */
>> #endif				/* _KGDB_H_ */
>>diff -Nru a/kernel/kgdb.c b/kernel/kgdb.c
>>--- a/kernel/kgdb.c	Wed Feb 25 14:21:32 2004
>>+++ b/kernel/kgdb.c	Wed Feb 25 14:21:32 2004
>>@@ -1169,6 +1169,29 @@
>> 	printk("Connected.\n");
>> }
>>
>>+/*
>>+ * Sometimes we need to schedule a breakpoint because we can't break
>>+ * right where we are.
>>+ */
>>+static int kgdb_need_breakpoint[NR_CPUS];
>>+
>>+void kgdb_schedule_breakpoint(void)
>>+{
>>+	kgdb_need_breakpoint[smp_processor_id()] = 1;
>>+}
>>+
>>+void kgdb_process_breakpoint(void)
>>+{
>>+	/*
>>+	 * Handle a breakpoint queued from inside network driver code
>>+	  * to avoid reentrancy issues
>>+	 */
>>+	if (kgdb_need_breakpoint[smp_processor_id()]) {
>>+		 kgdb_need_breakpoint[smp_processor_id()] = 0;
>>+		 breakpoint();
>>+	}
>>+}
>>+
>> #ifdef CONFIG_KGDB_CONSOLE
>> char kgdbconbuf[BUFMAX];
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


  reply	other threads:[~2004-02-26 23:23 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-25 21:36 [PATCH][1/3] Update CVS KGDB's serial driver Tom Rini
2004-02-25 21:43 ` [PATCH][2/3] Update CVS KGDB's have kgdb_{schedule,process}_breakpoint Tom Rini
2004-02-25 21:53   ` [PATCH][3/3] Update CVS KGDB's wrt connect / detach Tom Rini
2004-02-26  8:14     ` [Kgdb-bugreport] " Amit S. Kale
2004-02-26 14:41       ` Tom Rini
2004-02-26 16:05         ` Daniel Jacobowitz
2004-02-26 17:44           ` Tom Rini
2004-02-26 23:32             ` Daniel Jacobowitz
2004-03-01  8:12           ` Amit S. Kale
2004-02-26 21:45         ` Pavel Machek
2004-03-01  8:29           ` Amit S. Kale
2004-02-26 18:08       ` Tom Rini
2004-03-01  8:15         ` Amit S. Kale
2004-02-26 23:30       ` George Anzinger
2004-02-26 23:59         ` Tom Rini
2004-02-27  1:57           ` George Anzinger
2004-02-27 15:49             ` Tom Rini
2004-02-27 22:11               ` George Anzinger
2004-02-27 22:50                 ` Tom Rini
2004-03-01 10:18                   ` Amit S. Kale
2004-03-01 10:17                 ` Amit S. Kale
2004-02-27 17:13             ` Tom Rini
2004-02-27 21:55               ` George Anzinger
2004-03-01  8:36         ` Amit S. Kale
2004-03-01 16:31           ` Tom Rini
2004-02-25 22:59   ` [Kgdb-bugreport] [PATCH][2/3] Update CVS KGDB's have kgdb_{schedule,process}_breakpoint George Anzinger
2004-02-25 23:04     ` Tom Rini
2004-02-25 23:23       ` George Anzinger
2004-02-26  7:30   ` Amit S. Kale
2004-02-26 23:19     ` George Anzinger [this message]
2004-03-01  8:32       ` Amit S. Kale
2004-03-02 21:19         ` George Anzinger
2004-03-03  5:13           ` Amit S. Kale
2004-03-04  0:20             ` George Anzinger
2004-03-04  4:58               ` Amit S. Kale
2004-03-11 21:28                 ` George Anzinger
2004-03-12  4:44                   ` Amit S. Kale
2004-03-12  8:03                     ` George Anzinger
2004-03-15 11:20                       ` Amit S. Kale
2004-03-15 19:52                         ` George Anzinger
2004-03-16  4:30                           ` Amit S. Kale
2004-03-16 13:02                             ` La Monte H.P. Yarroll
2004-03-16 15:04                               ` Amit S. Kale
2004-02-25 23:10 ` [Kgdb-bugreport] [PATCH][1/3] Update CVS KGDB's serial driver George Anzinger
2004-02-25 23:18   ` Tom Rini
2004-02-26  8:25 ` Amit S. Kale
2004-02-26 14:43   ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=403E7F0C.6000009@mvista.com \
    --to=george@mvista.com \
    --cc=amitkale@emsyssoft.com \
    --cc=kgdb-bugreport@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@suse.cz \
    --cc=trini@kernel.crashing.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox