[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 <tglx@linutronix.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
2ccdd1e77d
commit
2389b27216
2 changed files with 4 additions and 2 deletions
|
@ -167,8 +167,9 @@ static void pl010_rx_chars(struct uart_amba_port *uap)
|
||||||
ignore_char:
|
ignore_char:
|
||||||
status = readb(uap->port.membase + UART01x_FR);
|
status = readb(uap->port.membase + UART01x_FR);
|
||||||
}
|
}
|
||||||
|
spin_unlock(&port->lock);
|
||||||
tty_flip_buffer_push(tty);
|
tty_flip_buffer_push(tty);
|
||||||
return;
|
spin_lock(&port->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pl010_tx_chars(struct uart_amba_port *uap)
|
static void pl010_tx_chars(struct uart_amba_port *uap)
|
||||||
|
|
|
@ -153,8 +153,9 @@ static void pl011_rx_chars(struct uart_amba_port *uap)
|
||||||
ignore_char:
|
ignore_char:
|
||||||
status = readw(uap->port.membase + UART01x_FR);
|
status = readw(uap->port.membase + UART01x_FR);
|
||||||
}
|
}
|
||||||
|
spin_unlock(&uap->port.lock);
|
||||||
tty_flip_buffer_push(tty);
|
tty_flip_buffer_push(tty);
|
||||||
return;
|
spin_lock(&uap->port.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pl011_tx_chars(struct uart_amba_port *uap)
|
static void pl011_tx_chars(struct uart_amba_port *uap)
|
||||||
|
|
Loading…
Add table
Reference in a new issue