From: Daniel Thompson <daniel.thompson@linaro.org>
To: Jason Wessel <jason.wessel@windriver.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-serial@vger.kernel.org
Cc: patches@linaro.org, linaro-kernel@lists.linaro.org,
linux-kernel@vger.kernel.org,
John Stultz <john.stultz@linaro.org>,
Anton Vorontsov <anton.vorontsov@linaro.org>,
Colin Cross <ccross@android.com>,
kernel-team@android.com, kgdb-bugreport@lists.sourceforge.net,
Jiri Slaby <jslaby@suse.cz>,
Kumar Gala <galak@kernel.crashing.org>,
Pantelis Antoniou <panto@intracom.gr>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Joe Schultz <jschultz@xes-inc.com>,
Loic Poulain <loic.poulain@intel.com>,
Kyle McMartin <kyle@infradead.org>,
Stephen Warren <swarren@nvidia.com>, Ingo Molnar <mingo@elte.hu>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Grant Likely <grant.likely@linaro.org>,
Rob Herring <rob.herring@calxeda.com>,
Jingoo Han <jg1.han@samsung.com>,
Christophe Leroy <christophe.leroy@c-s.fr>
Subject: Re: [PATCH 1/4] serial: core: Consistent LF handling for poll_put_char
Date: Thu, 15 May 2014 12:06:26 +0100 [thread overview]
Message-ID: <53749FB2.3000206@linaro.org> (raw)
In-Reply-To: <537386D7.4060407@windriver.com>
On 14/05/14 16:08, Jason Wessel wrote:
> On 05/14/2014 09:55 AM, Daniel Thompson wrote:
>> The behaviour of the UART poll_put_char infrastructure is inconsistent
>> with respect to linefeed conversions. This in turn leads to difficulty
>> using kdb on serial ports that are not also consoles
>> (e.g. console=ttyAMA0,115200 kgdboc=ttyAMA1,115200).
>>
>> The following drivers automatically convert '\n' to '\r\n' inside their
>> own poll functions but the remaining seventeen do not:
>>
>> serial8250, cpm, pch_uart, serial_pxa, serial_txx9,
>>
>> This can be made fully consistent but performing the conversion in
>> uart_poll_put_char(). A similar conversion is already made inside
>> uart_console_write() but it is optional for drivers to use this
>> function. Fortunately we can be confident the translation is safe
>> because the (very common) 8250 already does this translation.
>
>
> I'll have to take a look at some of the other drivers. If all the
> instances of the function calls are going to coded per driver, it might
> make more sense to add variable to struct uart_port, vs changing the
> number of arguments to uart_poll_put_char. And then the default can
> simply be coded in the struct initialization to the most common need.
I'm proposing a very simply approach: unconditionally make all serial
drivers behave like the 8250.
Detailed reasoning is:
1. Making the polled serial drivers behave consistently is good for
transferring mainstream testing to less commonly used UARTs,
2. The 8250 gets best test coverage so it is probably the best
behaviour to standardize on,
3. kdb normally sends characters to the user using console I/O
rather than polled I/O and almost all serial drivers automatically
convert linefeeds in the console I/O,
4. kgdb never generates a linefeed character. If it did kgdb would not
currently work on 8250 UARTs (its true that I have assumed, whilst
reasoning about potential regressions, that is does).
To be absolutely sure of #4 I did a full code review this morning and
confirmed that all code that sends arbitrary data to the gdbserver
converts the raw data to hex first. Note also that if, in the future,
kgdb does ever implement the "modern" gdbserver commands that utilize
raw 8-bit data it would still be possible for kgdb to escape linefeeds
to ensure arbitrary binary data can be safely transferred.
Daniel.
next prev parent reply other threads:[~2014-05-15 11:06 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-14 14:55 [PATCH 0/4] serial: kgdb_nmi: Allow ttyNMIX to act as primary console Daniel Thompson
2014-05-14 14:55 ` [PATCH 1/4] serial: core: Consistent LF handling for poll_put_char Daniel Thompson
2014-05-14 14:55 ` Daniel Thompson
2014-05-14 15:08 ` Jason Wessel
2014-05-14 15:08 ` Jason Wessel
2014-05-15 11:06 ` Daniel Thompson [this message]
2014-05-28 20:03 ` Greg Kroah-Hartman
2014-05-29 8:48 ` [PATCH tty-next v2 0/4] serial: kgdb_nmi: Allow ttyNMIX to act as primary console Daniel Thompson
2014-05-29 8:48 ` [PATCH tty-next v2 1/4] serial: cpm_uart: No LF conversion in put_poll_char() Daniel Thompson
2014-05-29 8:48 ` [PATCH tty-next v2 2/4] serial: kgdb_nmi: Use container_of() to locate private data Daniel Thompson
2014-05-29 8:48 ` [PATCH tty-next v2 3/4] serial: kgdb_nmi: Switch from tasklets to real timers Daniel Thompson
2014-05-29 8:48 ` [PATCH tty-next v2 4/4] serial: kgdb_nmi: Improve console integration with KDB I/O Daniel Thompson
2014-05-14 14:55 ` [PATCH 2/4] serial: kgdb_nmi: Use container_of() to locate private data Daniel Thompson
2014-05-14 14:55 ` [PATCH 3/4] serial: kgdb_nmi: Switch from tasklets to real timers Daniel Thompson
2014-05-14 14:55 ` [PATCH 4/4] serial: kgdb_nmi: Improve console integration with KDB I/O Daniel Thompson
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=53749FB2.3000206@linaro.org \
--to=daniel.thompson@linaro.org \
--cc=anton.vorontsov@linaro.org \
--cc=ccross@android.com \
--cc=christophe.leroy@c-s.fr \
--cc=galak@kernel.crashing.org \
--cc=grant.likely@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=jason.wessel@windriver.com \
--cc=jg1.han@samsung.com \
--cc=john.stultz@linaro.org \
--cc=jschultz@xes-inc.com \
--cc=jslaby@suse.cz \
--cc=kernel-team@android.com \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=kyle@infradead.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=loic.poulain@intel.com \
--cc=mingo@elte.hu \
--cc=panto@intracom.gr \
--cc=patches@linaro.org \
--cc=paul.gortmaker@windriver.com \
--cc=rob.herring@calxeda.com \
--cc=swarren@nvidia.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.