From: Phil Elwell Date: Fri, 29 Sep 2017 09:32:19 +0000 (+0100) Subject: amba_pl011: Insert mb() for correct FIFO handling X-Git-Tag: accepted/tizen/unified/20200709.164653~1261 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=487b679ced7c0c528c755f7b9c31fbd0bbdd8edf;p=platform%2Fkernel%2Flinux-rpi.git 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 --- diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 81a60f2..e397c37 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -1383,6 +1383,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, return false; /* unable to transmit character */ pl011_write(c, uap, REG_DR); + mb(); uap->port.icount.tx++; return true;