From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: linux-serial@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Sergey Organov <sorganov@gmail.com>,
NXP Linux Team <linux-imx@nxp.com>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v4 1/3] serial: imx: set_termios(): do not enable autoRTS if RTS is unset
Date: Mon, 22 Jul 2019 10:57:21 +0100 [thread overview]
Message-ID: <20190722095721.GB1330@shell.armlinux.org.uk> (raw)
In-Reply-To: <20190722075107.cc3tvf6gmxhaeh5m@pengutronix.de>
On Mon, Jul 22, 2019 at 09:51:07AM +0200, Uwe Kleine-König wrote:
> On Mon, Jul 22, 2019 at 10:42:57AM +0300, Sergey Organov wrote:
> > Uwe Kleine-König <u.kleine-koenig@pengutronix.de> writes:
> >
> > > On Fri, Jul 19, 2019 at 06:13:52PM +0300, Sergey Organov wrote:
> > >> Hello Uwe,
> > >>
> > >> Uwe Kleine-König <u.kleine-koenig@pengutronix.de> writes:
> > >> > Hello Sergey,
> > >> >
> > >> > On Fri, Jul 19, 2019 at 03:18:13PM +0300, Sergey Organov wrote:
> > >> >> Uwe Kleine-König <u.kleine-koenig@pengutronix.de> writes:
> > >> >> > On Fri, Jul 19, 2019 at 11:47:52AM +0300, Sergey Organov wrote:
> > >> >> >> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
> > >> >> >> index 57d6e6b..95d7984 100644
> > >> >> >> --- a/drivers/tty/serial/imx.c
> > >> >> >> +++ b/drivers/tty/serial/imx.c
> > >> >> >> @@ -405,7 +405,8 @@ static void imx_uart_rts_inactive(struct imx_port *sport, u32 *ucr2)
> > >> >> >> /* called with port.lock taken and irqs caller dependent */
> > >> >> >> static void imx_uart_rts_auto(struct imx_port *sport, u32 *ucr2)
> > >> >> >> {
> > >> >> >> - *ucr2 |= UCR2_CTSC;
> > >> >> >> + if (*ucr2 & UCR2_CTS)
> > >> >> >> + *ucr2 |= UCR2_CTSC;
> > >> >> >
> > >> >> > I think this patch is wrong or the commit log is insufficient.
> > >> >> > imx_uart_rts_auto() has only a single caller and there ucr2 & UCR2_CTS is
> > >> >> > never true. And CTSC isn't restored anywhere, is it?
> > >> >>
> > >> >> This is rebase to 'tty-next' branch, and you need to look at it in that
> > >> >> context. There, ucr2 & UCR2_CTS does already make sense, due to previous
> > >> >> fix that is already there.
> > >> >
> > >> > I looked at 57d6e6b which is the file you patched. And there
> > >> > imx_uart_rts_auto is only ever called with *ucr2 not having UCR2_CTS.
> > >> >
> > >> > If you still think I'm wrong, please improve the commit log
> > >> > accordingly.
> > >>
> > >> I still think you are wrong, but I don't know how to improve commit log.
> > >>
> > >> To check it once again, I just did:
> > >>
> > >> $ git show 57d6e6b > imx.c
> > >>
> > >> There, in imx_uart_set_termios(), I see:
> > >>
> > >> 1569: old_ucr2 = imx_uart_readl(sport, UCR2);
> > >> 1570: ucr2 = old_ucr2 & (UCR2_TXEN | UCR2_RXEN | UCR2_ATEN | UCR2_CTS);
> > >>
> > >> Here, current UCR2 value is read into 'old_ucr2' and then its /current/
> > >> UCR2_CTS bit is copied into 'ucr2' (along with 3 other bits).
> > >>
> > >> Then, later in the same function:
> > >>
> > >> 1591: imx_uart_rts_auto(sport, &ucr2);
> > >>
> > >> is called that can check /current/ state of UCR2_CTS bit in '*ucr2'.
> > >>
> > >> That's what the patch does, checks this bit.
> > >>
> > >> Sorry, I fail to see how you came to conclusion that "*ucr2 not having
> > >> UCR2_CTS". Do we maybe still read different versions of the file?
> > >
> > > No, it's just that I failed to see that UCR2_CTS is in the set of bits
> > > that are retained even when looking twice :-|
> >
> > Ah, that one... How familiar :-)
>
> I thought again a bit over the weekend about this. I wonder if it's
> correct to keep RTS active while going through .set_termios. Shouldn't
> it maybe always be inactive to prevent the other side sending data while
> we are changing the baud rate?
Only if CRTSCTS is enabled, and then there are a lot of serial drivers
to fix.
However, RTS is not guaranteed to stop the remote end sending characters
as soon as it is deasserted - 16550 relies on software noticing that
CTS has changed, and even then it may have a FIFO full of characters
already queued to be sent that will still be sent.
So, disabling RTS just before changing the baud doesn't give any
guarantees that a character won't be in the process of being received
while we're changing the baud rate, which means disabling it doesn't
actually gain us anything.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-07-22 9:59 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-14 7:28 [PATCH] serial: imx: fix RTS/CTS setting Sascha Hauer
2019-06-14 7:48 ` Uwe Kleine-König
2019-06-14 12:11 ` [PATCH RFC 0/7] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 1/7] serial: imx: fix locking in set_termios() Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 2/7] serial: imx: set_termios(): factor-out 'ucr2' initial value Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 3/7] serial: imx: set_termios(): clarify RTS/CTS bits calculation Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 4/7] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-06-20 9:37 ` Sascha Hauer
2019-06-20 13:24 ` Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 5/7] serial: imx: set_termios(): preserve RTS state Sergey Organov
2019-06-14 13:05 ` Lothar Waßmann
2019-06-14 13:28 ` Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 6/7] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-06-14 12:11 ` [PATCH RFC 7/7] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 0/7] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 1/7] serial: imx: fix locking in set_termios() Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 2/7] serial: imx: set_termios(): factor-out 'ucr2' initial value Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 3/7] serial: imx: set_termios(): clarify RTS/CTS bits calculation Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 4/7] serial: imx: set_termios(): preserve RTS state Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 5/7] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 6/7] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-06-20 14:47 ` [PATCH RFC v1 7/7] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-06-26 10:00 ` [PATCH RFC v1 0/7] serial: imx: fix RTS and RTS/CTS handling Sascha Hauer
2019-06-26 11:19 ` Sergey Organov
2019-06-26 14:11 ` [PATCH v2 " Sergey Organov
2019-06-26 14:11 ` [PATCH v2 1/7] serial: imx: fix locking in set_termios() Sergey Organov
2019-06-27 5:05 ` Uwe Kleine-König
2019-06-26 14:11 ` [PATCH v2 2/7] serial: imx: set_termios(): factor-out 'ucr2' initial value Sergey Organov
2019-06-27 5:05 ` Uwe Kleine-König
2019-06-26 14:11 ` [PATCH v2 3/7] serial: imx: set_termios(): clarify RTS/CTS bits calculation Sergey Organov
2019-06-27 5:26 ` Uwe Kleine-König
2019-06-27 5:58 ` Sergey Organov
2019-06-26 14:11 ` [PATCH v2 4/7] serial: imx: set_termios(): preserve RTS state Sergey Organov
2019-06-27 5:40 ` Uwe Kleine-König
2019-06-27 6:15 ` Sergey Organov
2019-06-26 14:11 ` [PATCH v2 5/7] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-06-27 5:47 ` Uwe Kleine-König
2019-06-27 6:16 ` Sergey Organov
2019-06-26 14:11 ` [PATCH v2 6/7] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-06-27 6:05 ` Uwe Kleine-König
2019-06-27 7:01 ` Sergey Organov
2019-06-26 14:11 ` [PATCH v2 7/7] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-06-27 6:08 ` Uwe Kleine-König
2019-06-27 7:58 ` Sergey Organov
2019-07-04 13:00 ` [PATCH v3 0/7] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-07-04 13:00 ` [PATCH v3 1/7] serial: imx: fix locking in set_termios() Sergey Organov
2019-07-04 13:00 ` [PATCH v3 2/7] serial: imx: set_termios(): factor-out 'ucr2' initial value Sergey Organov
2019-07-04 13:00 ` [PATCH v3 3/7] serial: imx: set_termios(): clarify RTS/CTS bits calculation Sergey Organov
2019-07-04 13:00 ` [PATCH v3 4/7] serial: imx: set_termios(): preserve RTS state Sergey Organov
2019-07-04 13:00 ` [PATCH v3 5/7] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-07-04 13:00 ` [PATCH v3 6/7] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-07-04 13:00 ` [PATCH v3 7/7] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-07-19 8:47 ` [PATCH v4 0/3] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-07-19 8:47 ` [PATCH v4 1/3] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-07-19 9:11 ` Uwe Kleine-König
2019-07-19 12:18 ` Sergey Organov
2019-07-19 14:31 ` Uwe Kleine-König
2019-07-19 15:13 ` Sergey Organov
2019-07-19 20:19 ` Uwe Kleine-König
2019-07-22 7:42 ` Sergey Organov
2019-07-22 7:51 ` Uwe Kleine-König
2019-07-22 9:20 ` Sergey Organov
2019-07-22 9:46 ` Uwe Kleine-König
2019-07-22 13:54 ` Sergey Organov
2019-07-22 16:47 ` Uwe Kleine-König
2019-07-22 9:57 ` Russell King - ARM Linux admin [this message]
2019-07-22 10:04 ` Uwe Kleine-König
2019-07-22 10:17 ` Russell King - ARM Linux admin
2019-07-19 8:47 ` [PATCH v4 2/3] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-07-19 8:47 ` [PATCH v4 3/3] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-07-22 9:22 ` [PATCH v5 0/3] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-07-22 9:22 ` [PATCH v5 1/3] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-07-22 9:54 ` Uwe Kleine-König
2019-07-22 13:57 ` Sergey Organov
2019-07-22 16:20 ` Uwe Kleine-König
2019-07-22 19:09 ` Sergey Organov
2019-07-22 9:22 ` [PATCH v5 2/3] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-07-22 9:22 ` [PATCH v5 3/3] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-07-22 19:22 ` [PATCH v6 0/3] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-07-22 19:22 ` [PATCH v6 1/3] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-07-22 19:22 ` [PATCH v6 2/3] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-07-22 20:24 ` Uwe Kleine-König
2019-07-23 9:20 ` Sergey Organov
2019-07-23 9:49 ` Uwe Kleine-König
2019-07-23 11:16 ` Sergey Organov
2019-07-23 11:30 ` Sergey Organov
2019-07-22 19:22 ` [PATCH v6 3/3] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-07-26 18:52 ` [PATCH v7 0/3] serial: imx: fix RTS and RTS/CTS handling Sergey Organov
2019-07-26 18:52 ` [PATCH v7 1/3] serial: imx: set_termios(): do not enable autoRTS if RTS is unset Sergey Organov
2019-07-26 18:52 ` [PATCH v7 2/3] serial: imx: set_mctrl(): correctly restore autoRTS state Sergey Organov
2019-07-26 18:52 ` [PATCH v7 3/3] serial: imx: get rid of imx_uart_rts_auto() Sergey Organov
2019-07-26 19:29 ` Uwe Kleine-König
2019-07-29 9:03 ` Sergey Organov
2019-07-29 9:29 ` Uwe Kleine-König
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=20190722095721.GB1330@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-serial@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sorganov@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
/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;
as well as URLs for NNTP newsgroup(s).