This Linux kernel change "serial: sh-sci: disable DMA for uart_console" is included in the Linux 5.2 release. This change is authored by George G. Davis <george_davis [at] mentor.com> on Tue May 14 23:29:34 2019 -0400. The commit for this change in Linux stable tree is 099506c (patch).
serial: sh-sci: disable DMA for uart_console As noted in commit 84b40e3b57ee ("serial: 8250: omap: Disable DMA for console UART"), UART console lines use low-level PIO only access functions which will conflict with use of the line when DMA is enabled, e.g. when the console line is also used for systemd messages. So disable DMA support for UART console lines. Reported-by: Michael Rodin <firstname.lastname@example.org> Link: https://patchwork.kernel.org/patch/10929511/ Tested-by: Eugeniu Rosca <email@example.com> Reviewed-by: Simon Horman <firstname.lastname@example.org> Reviewed-by: Wolfram Sang <email@example.com> Reviewed-by: Geert Uytterhoeven <firstname.lastname@example.org> Cc: email@example.com Signed-off-by: George G. Davis <firstname.lastname@example.org> Signed-off-by: Greg Kroah-Hartman <email@example.com>
There are 7 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.
drivers/tty/serial/sh-sci.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c index 3cd1397..abc7057 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -1557,6 +1557,13 @@ static void sci_request_dma(struct uart_port *port) dev_dbg(port->dev, "%s: port %d\n", __func__, port->line); + /* + * DMA on console may interfere with Kernel log messages which use + * plain putchar(). So, simply don't use it with a console. + */ + if (uart_console(port)) + return; + if (!port->dev->of_node) return;