Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2389b272 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Russell King
Browse files

[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: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 2ccdd1e7
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -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)
+2 −1
Original line number Original line Diff line number Diff line
@@ -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)