From: Tom Rini <trini@kernel.crashing.org>
To: "Amit S. Kale" <amitkale@emsyssoft.com>
Cc: George Anzinger <george@mvista.com>, Pavel Machek <pavel@suse.cz>,
Linux Kernel <linux-kernel@vger.kernel.org>,
KGDB bugreports <kgdb-bugreport@lists.sourceforge.net>,
Matt Mackall <mpm@selenic.com>,
discuss@x86-64.org
Subject: Re: KGDB 2.0.3 with fixes and development in ethernet interface
Date: Fri, 23 Jan 2004 12:10:40 -0700 [thread overview]
Message-ID: <20040123191040.GB15271@stop.crashing.org> (raw)
In-Reply-To: <200401221039.14979.amitkale@emsyssoft.com>
On Thu, Jan 22, 2004 at 10:39:14AM +0530, Amit S. Kale wrote:
> On Thursday 22 Jan 2004 4:30 am, George Anzinger wrote:
> > Amit S. Kale wrote:
> > > On Sunday 18 Jan 2004 1:24 am, George Anzinger wrote:
> > >>Amit S. Kale wrote:
> > >>>On Saturday 17 Jan 2004 6:53 am, George Anzinger wrote:
> > >>>>>This seems to be needed (if I unselect CONFIG_KGDB_THREAD, I get
> > >>>>>compile error on x86-64).
> > >>>>
> > >>>>Amit, could you explain why this is an option? It seems very useful
> > >>>> and not really too much code...
> > >>>
> > >>>It saves all registers before switch_to. It does that two times at
> > >>>present. Once (implicit) register save by gcc and an explicit register
> > >>>save in arch/<proc>/kernel/entry.S Second register save in kern_schedule
> > >>>generates a pt_regs structure which gdb can get all registers at once
> > >>>from. If it's omited, gdb has to figure out where gcc has saved
> > >>> registers from the non-standards code in switch_to, which it can't do
> > >>> correctly all the time.
> > >>>
> > >>>We can have a check for (a new variable) debugger_enabled before calling
> > >>>kern_schedule. That'll be add negligible overhead and will allow extra
> > >>>thread info to be saved only when a debugger is enabled. There will not
> > >>>be any need for CONFIG_KGDB_THREAD also.
> > >>
> > >>I don't seem to have such a problem with the mm kgdb. No kern_schedule
> > >>there...
> > >
> > > Have you confirmed that you see correct values for all the registers? I
> > > had found some problems with gdb not being able to locate all the
> > > registers correctly. Explanation on the problem below:
> > >
> > > Besides getting gdb's fault there is one more benefit of kern_schedule.
> > > All threads are shown by gdb as sleeping _at_ the place where schedule
> > > call is present: So instead of gdb showing all threads sleeping in
> > > __switch_to, it shows several functions. That's better than having to
> > > look at back trace of each thread to figure out what it is.
> >
> > The mm version of kgdb does this, but by lying to gdb during the info
> > thread command. IMNSHO, the real way to do this is to process the info
> > thread output with an awk script, but I haven't done that just yet. The
> > problem with lying to gdb is that it sometimes remembers...
> >
> > > This functionality is complemented by printing of thread names in 2.0.X
> > > kgdb info threads listing.
> >
> > as in the mm version.
> >
> > > Now back to gdb problem of not being able to locate registers.
> > > schedule results in code of this form:
> > >
> > > schedule:
> > > framesetup
> > > registers save
> > > ...
> > > ...
> > > save registers
> > > change esp
> > > call switchto
> > > restore registers
> > > ...
> >
> > I have not analyzed this as yet. However, it does seem to me to be the
> > same problem as trying to bt through an interrupt frame. The correct way
> > to do this is to build the dwarf frame descriptors. I have done this for
> > the interrupt frame and intend to send said patch out in a day or so.
>
> Great! I had to do it this ackward way:
[snip]
> Powerpc ->
> int irq, first = 1;
> + unsigned long *lrptr;
> + if (!(regs->msr & MSR_PR)) {
> + /* Came in from the kernel. Save call link. */
> + lrptr = (unsigned long *)(regs->gpr[1] + 4);
> + *lrptr = regs->nip;
> + }
Amit, this is broken and causes a lockup on my machine. I haven't tried
to find the 'correct' way to do this, but in the next verion of the kgdb
patches can you please if 0 this section? Thanks.
--
Tom Rini
http://gate.crashing.org/~trini/
prev parent reply other threads:[~2004-01-23 19:11 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-16 12:29 KGDB 2.0.3 with fixes and development in ethernet interface Amit S. Kale
2004-01-16 12:58 ` Pavel Machek
2004-01-16 14:07 ` Christoph Hellwig
2004-01-16 14:24 ` Amit S. Kale
2004-01-16 14:17 ` Amit S. Kale
2004-01-16 14:45 ` Pavel Machek
2004-01-16 13:05 ` [discuss] " Andi Kleen
2004-01-16 14:21 ` Amit S. Kale
2004-01-16 14:45 ` Pavel Machek
2004-01-16 15:12 ` Amit S. Kale
2004-01-16 14:47 ` Pavel Machek
2004-01-16 15:15 ` Amit S. Kale
2004-01-16 15:52 ` Pavel Machek
2004-01-17 6:27 ` KGDB documentation [Re: [discuss] KGDB 2.0.3 with fixes and development in ethernet interface] Amit S. Kale
2004-01-17 9:00 ` George Anzinger
2004-01-16 18:39 ` [discuss] KGDB 2.0.3 with fixes and development in ethernet interface Matt Mackall
2004-01-16 16:13 ` Pavel Machek
2004-01-16 20:48 ` George Anzinger
2004-01-16 21:51 ` Pavel Machek
2004-01-17 1:23 ` George Anzinger
2004-01-17 9:29 ` Amit S. Kale
2004-01-17 19:54 ` George Anzinger
2004-01-21 13:46 ` Amit S. Kale
2004-01-21 18:39 ` Daniel Jacobowitz
2004-01-21 23:14 ` George Anzinger
2004-01-22 5:49 ` Amit S. Kale
2004-01-22 20:33 ` Daniel Jacobowitz
2004-01-21 23:00 ` George Anzinger
2004-01-22 5:09 ` Amit S. Kale
2004-01-22 17:20 ` Tom Rini
2004-01-22 22:54 ` George Anzinger
2004-01-22 22:57 ` Daniel Jacobowitz
2004-01-23 19:10 ` Tom Rini [this message]
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=20040123191040.GB15271@stop.crashing.org \
--to=trini@kernel.crashing.org \
--cc=amitkale@emsyssoft.com \
--cc=discuss@x86-64.org \
--cc=george@mvista.com \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=pavel@suse.cz \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.