diff mbox series

[v2] serial: sh-sci: disable DMA for uart_console

Message ID 1557762446-23811-1-git-send-email-george_davis@mentor.com (mailing list archive)
State Superseded
Delegated to: Geert Uytterhoeven
Headers show
Series [v2] serial: sh-sci: disable DMA for uart_console | expand

Commit Message

George G. Davis May 13, 2019, 3:47 p.m. UTC
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.

Fixes: https://patchwork.kernel.org/patch/10929511/
Reported-by: Michael Rodin <mrodin@de.adit-jv.com>
Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: stable@vger.kernel.org
Signed-off-by: George G. Davis <george_davis@mentor.com>
---
v2: Clarify comment regarding DMA support on kernel console,
    add {Tested,Reviewed}-by:, and Cc: linux-stable lines.
---
 drivers/tty/serial/sh-sci.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Geert Uytterhoeven May 14, 2019, 8:28 a.m. UTC | #1
Hi George,

On Mon, May 13, 2019 at 5:48 PM George G. Davis <george_davis@mentor.com> wrote:
> 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.
>
> Fixes: https://patchwork.kernel.org/patch/10929511/

I don't think this is an appropriate reference, as it points to a patch that
was never applied.

As the problem has basically existed forever, IMHO no Fixes tag
is needed.

> Reported-by: Michael Rodin <mrodin@de.adit-jv.com>
> Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
> Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Cc: stable@vger.kernel.org
> Signed-off-by: George G. Davis <george_davis@mentor.com>
> ---
> v2: Clarify comment regarding DMA support on kernel console,
>     add {Tested,Reviewed}-by:, and Cc: linux-stable lines.

Thanks for the update!

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert
George G. Davis May 14, 2019, 3:30 p.m. UTC | #2
Hello Geert,

On Tue, May 14, 2019 at 10:28:34AM +0200, Geert Uytterhoeven wrote:
> Hi George,
> 
> On Mon, May 13, 2019 at 5:48 PM George G. Davis <george_davis@mentor.com> wrote:
> > 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.
> >
> > Fixes: https://patchwork.kernel.org/patch/10929511/
> 
> I don't think this is an appropriate reference, as it points to a patch that
> was never applied.

I included it as a link to an upstream problem report similar to other commits
that I previewed. The link provides the extra context that I was perhaps to
lazy to note in the commit header.

> As the problem has basically existed forever,

Agreed

> IMHO no Fixes tag
> is needed.

I've dropped the Fixes line.

> > Reported-by: Michael Rodin <mrodin@de.adit-jv.com>
> > Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
> > Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
> > Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> > Cc: stable@vger.kernel.org
> > Signed-off-by: George G. Davis <george_davis@mentor.com>
> > ---
> > v2: Clarify comment regarding DMA support on kernel console,
> >     add {Tested,Reviewed}-by:, and Cc: linux-stable lines.
> 
> Thanks for the update!

Thanks!


I'll submit v3 later today.

> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> -- 
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
Wolfram Sang May 14, 2019, 3:54 p.m. UTC | #3
> > > Fixes: https://patchwork.kernel.org/patch/10929511/
> > 
> > I don't think this is an appropriate reference, as it points to a patch that
> > was never applied.
> 
> I included it as a link to an upstream problem report similar to other commits
> that I previewed. The link provides the extra context that I was perhaps to
> lazy to note in the commit header.

We have a "Link:" tag for things like this, e.g.:

Link: https://patchwork.kernel.org/patch/10929511/
George G. Davis May 14, 2019, 4:16 p.m. UTC | #4
Hello Wolfram,

On Tue, May 14, 2019 at 05:54:51PM +0200, Wolfram Sang wrote:
> 
> > > > Fixes: https://patchwork.kernel.org/patch/10929511/
> > > 
> > > I don't think this is an appropriate reference, as it points to a patch that
> > > was never applied.
> > 
> > I included it as a link to an upstream problem report similar to other commits
> > that I previewed. The link provides the extra context that I was perhaps to
> > lazy to note in the commit header.
> 
> We have a "Link:" tag for things like this, e.g.:
> 
> Link: https://patchwork.kernel.org/patch/10929511/

Right, I've changed it to a Link instead.

Thanks!
diff mbox series

Patch

diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index 3cd139752d3f..abc705716aa0 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;