On Wed, Mar 03, 2004 at 04:27:57PM -0800, George Anzinger wrote:
Tom Rini wrote:
But that's not what you get with kgdb_serial. You get the possibility
of serial from point A to B and you will have eth from point B onward,
if compiled in. With an arch serial driver you get the possibility of
serial (or arch serial or whatever) from point A to B and eth from point
B onward, if compiled in.
I don't think we want to switch. Rather we want to say something like: If no eth (or other input) options are on the command line then its is serial. If eth (or other input) is there, that is what we use.
This does leave open what happens when "eth" is given and we hit a breakpoint prior to looking at the command line, but now this just fails so we would be hard put to do worse.
This doesn't fail right now, or rather it shouldn't. We would call
kgdb_arch_init() which would set it to 8250 (or arch serial) and go. If
8250||arch serial is compiled in.
I think you missed the point. The problem isn't with providing weak
functions, the problem is trying to set the function pointer. PPC
becomes quite clean since the next step is to kill off
PPC_SIMPLE_SERIAL and just have kgdb_read/write_debug_char in the
relevant serial drivers.
No, you just set the default at configure time. It is just done in such away as to allow it to be overridden.
Which means you have to either c&p this into kgdb_arch_init for every
arch that provides it's own, or (and I've been thinking that this isn't
necessarily a bad idea) standardize on names for the arch serial driver,
and in kernel/kgdb.c::kgdb_entry() do:
#ifdef CONFIG_KGDB_8250
extern ... kgdb8250_serial;
kgdb_serial = &kgdb8250_serial;
#elif CONFIG_KGDB_ARCH_SERIAL
extern ... kgdbarch_serial;
kgdb_serial = &kgdbarch_serial;
#elif CONFIG_KGDB_ETH
extern ... kgdboe_serial;
kgdb_serial = &kgdboe_serial;
#endif