From 6424aad28c75df704981eb497e8c57379523e929 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 29 Sep 2017 10:32:19 +0100 Subject: [PATCH 0082/1085] amba_pl011: Insert mb() for correct FIFO handling The pl011 register accessor functions use the _relaxed versions of the standard readl() and writel() functions, meaning that there are no automatic memory barriers. When polling a FIFO status register to check for fullness, it is necessary to ensure that any outstanding writes have completed; otherwise the flags are effectively stale, making it possible that the next write is to a full FIFO. Signed-off-by: Phil Elwell --- drivers/tty/serial/amba-pl011.c | 1 + 1 file changed, 1 insertion(+) --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -1456,6 +1456,7 @@ static bool pl011_tx_char(struct uart_am return false; /* unable to transmit character */ pl011_write(c, uap, REG_DR); + mb(); uap->port.icount.tx++; return true;