serial: sh-sci: disable DMA for uart_console [Linux 5.2]

serial: sh-sci: disable DMA for uart_console [Linux 5.2]

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 <[email protected]>
Link: https://patchwork.kernel.org/patch/10929511/
Tested-by: Eugeniu Rosca <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
Reviewed-by: Wolfram Sang <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Cc: [email protected]
Signed-off-by: George G. Davis <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

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;

Leave a Reply

Your email address will not be published. Required fields are marked *