ARM: 5688/1: ks8695_serial: disable_irq() lockup
disable_irq() cannot be called from interrupt context without self imposed deadlock. This was happening in ks8695uart_stop_tx(). Signed-off-by: Dick Hollenbeck <dick@softplc.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
13f96d8f4c
commit
c47a830c08
@ -110,7 +110,11 @@ static struct console ks8695_console;
|
|||||||
static void ks8695uart_stop_tx(struct uart_port *port)
|
static void ks8695uart_stop_tx(struct uart_port *port)
|
||||||
{
|
{
|
||||||
if (tx_enabled(port)) {
|
if (tx_enabled(port)) {
|
||||||
disable_irq(KS8695_IRQ_UART_TX);
|
/* use disable_irq_nosync() and not disable_irq() to avoid self
|
||||||
|
* imposed deadlock by not waiting for irq handler to end,
|
||||||
|
* since this ks8695uart_stop_tx() is called from interrupt context.
|
||||||
|
*/
|
||||||
|
disable_irq_nosync(KS8695_IRQ_UART_TX);
|
||||||
tx_enable(port, 0);
|
tx_enable(port, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user