From 486cab2ba25b469f7a8822e84fd43960a472e3d9 Mon Sep 17 00:00:00 2001 From: Andrew Victor Date: Mon, 28 May 2007 10:47:19 +0100 Subject: [ARM] 4411/1: KS8695: Another serial driver fix Fix a error reported by newer versions of GCC. error: static declaration of 'ks8695_reg' follows non-static declaration Signed-off-by: Andrew Victor Signed-off-by: Russell King --- drivers/serial/serial_ks8695.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/serial') diff --git a/drivers/serial/serial_ks8695.c b/drivers/serial/serial_ks8695.c index 698763b28dd..8721afe1ae4 100644 --- a/drivers/serial/serial_ks8695.c +++ b/drivers/serial/serial_ks8695.c @@ -589,7 +589,7 @@ static int __init ks8695_console_setup(struct console *co, char *options) return uart_set_options(port, co, baud, parity, bits, flow); } -extern struct uart_driver ks8695_reg; +static struct uart_driver ks8695_reg; static struct console ks8695_console = { .name = SERIAL_KS8695_DEVNAME, -- cgit v1.2.3 From 2389b272168ceec056ca1d8a870a97fa9c26e11a Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 29 May 2007 21:53:50 +0100 Subject: [ARM] 4417/1: Serial: Fix AMBA drivers locking The -rt patch triggered a lockdep warning in the amba serial drivers, which never shows up on UP kernels. On SMP systems this would trigger as well. Release the port lock before calling tty_flip_buffer_push() and reacquire it after the call. This matches the code in the 8250 serial driver. Signed-off-by: Thomas Gleixner Signed-off-by: Russell King --- drivers/serial/amba-pl010.c | 3 ++- drivers/serial/amba-pl011.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'drivers/serial') diff --git a/drivers/serial/amba-pl010.c b/drivers/serial/amba-pl010.c index 1a9a24b8263..00d1255e4c1 100644 --- a/drivers/serial/amba-pl010.c +++ b/drivers/serial/amba-pl010.c @@ -167,8 +167,9 @@ static void pl010_rx_chars(struct uart_amba_port *uap) ignore_char: status = readb(uap->port.membase + UART01x_FR); } + spin_unlock(&port->lock); tty_flip_buffer_push(tty); - return; + spin_lock(&port->lock); } static void pl010_tx_chars(struct uart_amba_port *uap) diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c index 44639e71372..954073c6ce3 100644 --- a/drivers/serial/amba-pl011.c +++ b/drivers/serial/amba-pl011.c @@ -153,8 +153,9 @@ static void pl011_rx_chars(struct uart_amba_port *uap) ignore_char: status = readw(uap->port.membase + UART01x_FR); } + spin_unlock(&uap->port.lock); tty_flip_buffer_push(tty); - return; + spin_lock(&uap->port.lock); } static void pl011_tx_chars(struct uart_amba_port *uap) -- cgit v1.2.3