Linux Serial subsystem development
 help / color / mirror / Atom feed
From: Michael Walle <michael@walle.cc>
To: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	Angelo Dureghello <angelo.dureghello@timesys.com>,
	Fugang Duan <fugang.duan@nxp.com>,
	Philippe Schenker <philippe.schenker@toradex.com>,
	Michael Walle <michael@walle.cc>
Subject: [PATCH 8/8] serial: fsl_lpuart: disable DMA for console and fix sysrq
Date: Tue, 11 May 2021 22:01:48 +0200	[thread overview]
Message-ID: <20210511200148.11934-9-michael@walle.cc> (raw)
In-Reply-To: <20210511200148.11934-1-michael@walle.cc>

SYSRQ doesn't work with DMA. This is because there is no error
indication whether a symbol had a framing error or not. Actually,
this is not completely correct, there is a bit in the data register
which is set in this case, but we'd have to read change the DMA access
to 16 bit and we'd need to post process the data, thus make the DMA
pointless in the first place.

Signed-off-by: Michael Walle <michael@walle.cc>
---
Please note, that there is already sysrq/break support in the 8 bit
version. But I think there is a race between the hardware DMA controller
and the ISR in this driver. I'm not sure though and can't test it.

Angelo, maybe you could test it, I'd presume with this patch you don't need
the special handling in the ISR anymore.

 drivers/tty/serial/fsl_lpuart.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 5e66f628e895..bf869c8d0897 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -1587,6 +1587,9 @@ static void lpuart_tx_dma_startup(struct lpuart_port *sport)
 	u32 uartbaud;
 	int ret;
 
+	if (uart_console(&sport->port))
+		goto err;
+
 	if (!sport->dma_tx_chan)
 		goto err;
 
@@ -1616,6 +1619,9 @@ static void lpuart_rx_dma_startup(struct lpuart_port *sport)
 	int ret;
 	unsigned char cr3;
 
+	if (uart_console(&sport->port))
+		goto err;
+
 	if (!sport->dma_rx_chan)
 		goto err;
 
-- 
2.20.1


      parent reply	other threads:[~2021-05-11 20:02 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-11 20:01 [PATCH 0/8] serial: fsl_lpuart: sysrq, loopback support and fixes Michael Walle
2021-05-11 20:01 ` [PATCH 1/8] serial: fsl_lpuart: don't modify arbitrary data on lpuart32 Michael Walle
2021-05-11 20:01 ` [PATCH 2/8] serial: fsl_lpuart: use UARTDATA_MASK macro Michael Walle
2021-05-11 20:01 ` [PATCH 3/8] serial: fsl_lpuart: don't restore interrupt state in ISR Michael Walle
2021-05-12  9:25   ` Johan Hovold
2021-05-12  9:42     ` Michael Walle
2021-05-11 20:01 ` [PATCH 4/8] serial: fsl_lpuart: handle break and make sysrq work Michael Walle
2021-05-12  9:30   ` Johan Hovold
2021-05-12  9:46     ` Michael Walle
2021-05-12 10:07       ` Johan Hovold
2021-05-12 10:31         ` Michael Walle
2021-05-12 11:18           ` Johan Hovold
2021-05-11 20:01 ` [PATCH 5/8] serial: fsl_lpuart: remove RTSCTS handling from get_mctrl() Michael Walle
2021-05-11 20:01 ` [PATCH 6/8] serial: fsl_lpuart: remove manual RTSCTS control from 8-bit LPUART Michael Walle
2021-05-11 20:01 ` [PATCH 7/8] serial: fsl_lpuart: add loopback support Michael Walle
2021-05-11 20:01 ` Michael Walle [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210511200148.11934-9-michael@walle.cc \
    --to=michael@walle.cc \
    --cc=angelo.dureghello@timesys.com \
    --cc=fugang.duan@nxp.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=philippe.schenker@toradex.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox