Re: [PATCH][7/8] kgdb: exclusive use kgdb8250 uart I/O driver

From: Jan Kiszka
Date: Sat Feb 09 2008 - 09:54:36 EST


jason.wessel@xxxxxxxxxxxxx wrote:
> From: Jason Wessel <jason.wessel@xxxxxxxxxxxxx>
>
> This patch some small hooks into the normal serial core so that a uart
> can be unregistered to be exclusively used for KGDB. These changes
> allow for registering and unregistering a port with a struct
> uart_port. From that point on KGDB does raw accesses to the serial
> IO ports it has taken over.
>
> CC: linux-serial@xxxxxxxxxxxxxxx
> Signed-off-by: Jason Wessel <jason.wessel@xxxxxxxxxxxxx>
> Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxx>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> ---
> Documentation/DocBook/kgdb.tmpl | 44 ++++
> drivers/serial/8250.c | 30 +++
> drivers/serial/8250_kgdb.c | 489 +++++++++++++++++++++++++++++++++++++++
> drivers/serial/Kconfig | 2 +-
> drivers/serial/Makefile | 1 +
> drivers/serial/serial_core.c | 18 ++-
> include/linux/serial_8250.h | 2 +
> lib/Kconfig.kgdb | 21 ++
> 8 files changed, 603 insertions(+), 4 deletions(-)
> create mode 100644 drivers/serial/8250_kgdb.c

There are a few things I missed in my last cleanup round, please fold
them in, they reduce the changes outside kgdb. (I bet that membase
dumping was related to mmio vs. mmap configuration, right?)

--- linux-2.6-kgdb.orig/drivers/serial/Kconfig
+++ linux-2.6-kgdb/drivers/serial/Kconfig
@@ -121,7 +121,7 @@ config SERIAL_8250_CS

config SERIAL_8250_NR_UARTS
int "Maximum number of 8250/16550 serial ports"
- depends on SERIAL_8250 || KGDB_8250
+ depends on SERIAL_8250
default "4"
help
Set this to the number of serial ports you want the driver
--- linux-2.6-kgdb.orig/drivers/serial/serial_core.c
+++ linux-2.6-kgdb/drivers/serial/serial_core.c
@@ -1685,9 +1685,6 @@ static int uart_line_info(char *buf, str
mmio ? (unsigned long long)port->mapbase
: (unsigned long long) port->iobase,
port->irq);
- if (port->iotype == UPIO_MEM)
- ret += sprintf(buf+ret, " membase 0x%08lX",
- (unsigned long) port->membase);

if (port->type == PORT_UNKNOWN) {
strcat(buf, "\n");
@@ -2130,9 +2127,7 @@ uart_report_port(struct uart_driver *drv
case UPIO_TSI:
case UPIO_DWAPB:
snprintf(address, sizeof(address),
- "MMIO 0x%llx mem 0x%p",
- (unsigned long long)port->mapbase,
- port->membase);
+ "MMIO 0x%llx", (unsigned long long)port->mapbase);
break;
default:
strlcpy(address, "*unknown*", sizeof(address));
--- linux-2.6-kgdb.orig/include/linux/serial_8250.h
+++ linux-2.6-kgdb/include/linux/serial_8250.h
@@ -58,7 +58,6 @@ struct uart_port;

int serial8250_register_port(struct uart_port *);
void serial8250_unregister_port(int line);
-void serial8250_unregister_by_port(struct uart_port *port);
void serial8250_suspend_port(int line);
void serial8250_resume_port(int line);
int serial8250_get_port_def(struct uart_port *port, int line);
--
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/