Re: [discuss] Re: kgdb for x86_64 2.6 kernels

From: George Anzinger
Date: Mon Jan 12 2004 - 01:02:09 EST


Amit S. Kale wrote:
George,

Well said!

I have released kgdb 2.0.1 for kernel 2.6.1:
http://kgdb.sourceforge.net/linux-2.6.1-kgdb-2.0.1.tar.bz2

It doesn't contain any assert stuff. I have split it into multiple parts to make a merge easier. Please let me know if you want me to further split them or if you want something to be changed. The README file from this tarball is pasted below.

Here is two possible starting points:
1. SMP stuff -> Replace my old smp and nmi handling code.
2. Early boot -> Change 8250.patch to make configuration of serial port either through config options or through command line.

What does messing with 8250.c code buy us? I use a completely independent UART driver and only have "back off" code in the 8250 driver. In fact, I usually recommend that the serial (i.e. 8250.c) driver not even be loaded. My code also allows a more aggressive hookup to the interrupt code, to get the ^C to do its thing. I REALLY would like to keep Mr. Heisenberg out of kgdb. By using existing kernel code we are inviting him to visit.

I'll attempt reading your patch and merging as much stuff as possible.
Thanks.

May I suggest reading the comments preceeding the patch itself in Andrew's breakout code. These were written by Ingo and, I think, reflect some of the things he found useful.

Also, the information found in .../Documentation/i386/kgdb/* of the patch.



Patch:
------
Patch the kernel out of following patches.
core.patch - KGDB architecture and interface independent code. Required.
i386.patch - i386 architecture dependent part. Required only for that
architecture.
x86_64.patch - x86_64 architecture dependent part. Required only for that
architecture.
8250.patch - Generic serial port (8250 and 16550) interface for kgdb. This
is the only working interface in this release. Hence required.
eth.patch - Ethernet interface for kgdb. This is still under development.
Use only if you plan to contribute to its development.

Build:
------
Enable following config options (in this order).

Kernel hacking ->
KGDB: kernel debugging with remote gdb ->
KGDB: Thread analysis
KGDB: Console messages through gdb
Device drivers ->
Character devices ->
Serial drivers ->
KGDB: On generic serial port (8250)
If KGDB is on, this should not be needed. Also the driver part of KGDB should be local to the KGDB configure in the configure file. I think we should ALWAYS have the serial link. The eth link should be backed up by the serial link.

By the way, I will be out of town on Monday, back on Tuesday.

George


Boot:
-----
Supply command line options kgdbwait and kgdb8250 to the kernel.
Example: kgdbwait kgdb8250=1,115200

On Saturday 10 Jan 2004 3:46 am, George Anzinger wrote:

Amit,

The base line kgdb code in the mm patches was offered by me. It derives
from (a long time ago) a kgdb I got from the RTIA (or was it the RTLINUX)
folks. Prio to that, well, your name is on it as well as others.

As you may have noted there have been a lot of changes, mostly for the
better, I hope. I think we have slightly different objectives in our work.
I debug kernels, not drivers, so I am interested in getting into kgdb as
early as possible. To this end the current mm patch allows one to put a
breakpoint() as the first line of C code in the kernel. This required a
few adjustments, such as configuring the I/O port at CONFIG time, for
example.

I would like for the two versions of kgdb to merge while keeping the
features of both. The work on seperating the common code is something I
like and, while I never do modules, the automatic module stuff in gdb sound
good.

May I suggest that we compare and contrast the two versions and take a look
at the differences and the overlaps and settle on one way of doing the
various things.

George



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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/