Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1641076 > unrolled thread
| Started by | Peter Senna Tschudin <peter.senna@collabora.com> |
|---|---|
| First post | 2017-05-14 14:40 +0200 |
| Last post | 2017-05-17 12:10 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] imx-serial: RX DMA startup latency Peter Senna Tschudin <peter.senna@collabora.com> - 2017-05-14 14:40 +0200
Re: [PATCH] imx-serial: RX DMA startup latency Sascha Hauer <s.hauer@pengutronix.de> - 2017-05-17 12:10 +0200
| From | Peter Senna Tschudin <peter.senna@collabora.com> |
|---|---|
| Date | 2017-05-14 14:40 +0200 |
| Subject | [PATCH] imx-serial: RX DMA startup latency |
| Message-ID | <tH0Yx-1y5-3@gated-at.bofh.it> |
18a4208 introduced a change to reduce the RX DMA latency on the first reception
when the serial port was opened for reading. However it was claiming a hardirq
unsafe lock after a hardirq safe lock which is not allowed and causes lockdep
to complain verbosely.
This patch changes the code to always start RX DMA earlier, instead of
relying on the flags used to open the serial port removing the code that
was looking for the serial file flags.
CC: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Peter Senna Tschudin <peter.senna@collabora.com>
---
Tested on iMX53.
drivers/tty/serial/imx.c | 26 +++++---------------------
1 file changed, 5 insertions(+), 21 deletions(-)
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 33509b4..64e16b3 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -1340,29 +1340,13 @@ static int imx_startup(struct uart_port *port)
imx_enable_ms(&sport->port);
/*
- * If the serial port is opened for reading start RX DMA immediately
- * instead of waiting for RX FIFO interrupts. In our iMX53 the average
- * delay for the first reception dropped from approximately 35000
- * microseconds to 1000 microseconds.
+ * Start RX DMA immediately instead of waiting for RX FIFO interrupts.
+ * In our iMX53 the average delay for the first reception dropped from
+ * approximately 35000 microseconds to 1000 microseconds.
*/
if (sport->dma_is_enabled) {
- struct tty_struct *tty = sport->port.state->port.tty;
- struct tty_file_private *file_priv;
- int readcnt = 0;
-
- spin_lock(&tty->files_lock);
-
- if (!list_empty(&tty->tty_files))
- list_for_each_entry(file_priv, &tty->tty_files, list)
- if (!(file_priv->file->f_flags & O_WRONLY))
- readcnt++;
-
- spin_unlock(&tty->files_lock);
-
- if (readcnt > 0) {
- imx_disable_rx_int(sport);
- start_rx_dma(sport);
- }
+ imx_disable_rx_int(sport);
+ start_rx_dma(sport);
}
spin_unlock_irqrestore(&sport->port.lock, flags);
--
2.9.3
[toc] | [next] | [standalone]
| From | Sascha Hauer <s.hauer@pengutronix.de> |
|---|---|
| Date | 2017-05-17 12:10 +0200 |
| Message-ID | <tI441-1Iw-3@gated-at.bofh.it> |
| In reply to | #1641076 |
On Sun, May 14, 2017 at 02:35:15PM +0200, Peter Senna Tschudin wrote: > 18a4208 introduced a change to reduce the RX DMA latency on the first reception > when the serial port was opened for reading. However it was claiming a hardirq > unsafe lock after a hardirq safe lock which is not allowed and causes lockdep > to complain verbosely. > > This patch changes the code to always start RX DMA earlier, instead of > relying on the flags used to open the serial port removing the code that > was looking for the serial file flags. > > CC: Sascha Hauer <s.hauer@pengutronix.de> > Signed-off-by: Peter Senna Tschudin <peter.senna@collabora.com> > --- > Tested on iMX53. Tested-by: Sascha Hauer <s.hauer@pengutronix.de> (on an i.MX6) Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web