* [PATCH] kdb: Put a cr before lf when working w/ a non open console port
@ 2014-04-18 17:17 Doug Anderson
2014-04-18 23:53 ` Doug Anderson
2014-04-21 17:06 ` [PATCH v2] serial_core: Commonalize crlf " Doug Anderson
0 siblings, 2 replies; 4+ messages in thread
From: Doug Anderson @ 2014-04-18 17:17 UTC (permalink / raw)
To: Jason Wessel; +Cc: Doug Anderson, kgdb-bugreport, linux-kernel
In (efe2f29 kgdboc,kdb: Allow kdb to work on a non open console port)
support was added to directly use the "write_char" functions when
doing kdb over a non-open console port. This is great, but it ends up
bypassing the normal code in uart_console_write() that adds a carriage
return before any newlines.
Add similar code in kdb so we don't get things like:
[0]kdb>
[0]kdb>
[0]kdb>
Signed-off-by: Doug Anderson <dianders@chromium.org>
---
kernel/debug/kdb/kdb_io.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
index 14ff484..513ed44 100644
--- a/kernel/debug/kdb/kdb_io.c
+++ b/kernel/debug/kdb/kdb_io.c
@@ -698,6 +698,9 @@ kdb_printit:
len = retlen;
cp = kdb_buffer;
while (len--) {
+ if (*cp == '\n')
+ dbg_io_ops->write_char('\r');
+
dbg_io_ops->write_char(*cp);
cp++;
}
@@ -759,6 +762,9 @@ kdb_printit:
len = strlen(moreprompt);
cp = moreprompt;
while (len--) {
+ if (*cp == '\n')
+ dbg_io_ops->write_char('\r');
+
dbg_io_ops->write_char(*cp);
cp++;
}
--
1.9.1.423.g4596e3a
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] kdb: Put a cr before lf when working w/ a non open console port 2014-04-18 17:17 [PATCH] kdb: Put a cr before lf when working w/ a non open console port Doug Anderson @ 2014-04-18 23:53 ` Doug Anderson 2014-04-21 17:06 ` [PATCH v2] serial_core: Commonalize crlf " Doug Anderson 1 sibling, 0 replies; 4+ messages in thread From: Doug Anderson @ 2014-04-18 23:53 UTC (permalink / raw) To: Jason Wessel; +Cc: Doug Anderson, kgdb-bugreport, linux-kernel Hi, On Fri, Apr 18, 2014 at 10:17 AM, Doug Anderson <dianders@chromium.org> wrote: > In (efe2f29 kgdboc,kdb: Allow kdb to work on a non open console port) > support was added to directly use the "write_char" functions when > doing kdb over a non-open console port. This is great, but it ends up > bypassing the normal code in uart_console_write() that adds a carriage > return before any newlines. > > Add similar code in kdb so we don't get things like: > [0]kdb> > [0]kdb> > [0]kdb> > > Signed-off-by: Doug Anderson <dianders@chromium.org> > --- > kernel/debug/kdb/kdb_io.c | 6 ++++++ > 1 file changed, 6 insertions(+) I've been digging through the code and I've finally figured out where this happens on some other platforms (I'm using samsung/serial myself). The 8250 driver has it hardcoded in serial8250_put_poll_char(). Next week I'll include a removal of that code with v2 of this patch unless I hear any objections. I think doing things in kdb_io is nice because: * we don't need to duplicate the code in everyone's "put_poll_char" functions. * we don't end up running the code in kgdb mode, only in kdb mode. I could also move my change to be in uart_poll_put_char() which _would_ (I believe) apply to both kdb / kgdb if that was desirable for some reason. -Doug ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] serial_core: Commonalize crlf when working w/ a non open console port 2014-04-18 17:17 [PATCH] kdb: Put a cr before lf when working w/ a non open console port Doug Anderson 2014-04-18 23:53 ` Doug Anderson @ 2014-04-21 17:06 ` Doug Anderson 2014-04-22 9:55 ` One Thousand Gnomes 1 sibling, 1 reply; 4+ messages in thread From: Doug Anderson @ 2014-04-21 17:06 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Jason Wessel, linux-samsung-soc, olof, Doug Anderson, jslaby, paul.gortmaker, jg1.han, asierra, swarren, heikki.krogerus, jschultz, kyle, mingo, linux-serial, linux-kernel In (efe2f29 kgdboc,kdb: Allow kdb to work on a non open console port) support was added to directly use the "write_char" functions when doing kdb over a non-open console port. This is great, but it ends up bypassing the normal code in uart_console_write() that adds a carriage return before any newlines. There appears to have been a trend to add this support directly in some console driver's poll_put_char() functions. This had a few side effects, including: - In this case we were doing LFCR, not CRLF. This was fixed in uart_console_write() back in (d358788 [SERIAL] kernel console should send CRLF not LFCR) - Not all serial drivers had the LFCR code in their poll_put_char() functions. In my case I was running serial/samsung.c which lacked it. I've moved the handling to uart_poll_put_char() to fix the above problems. Now when I use kdb (and don't point console= to the same UART) I no longer get: [0]kdb> [0]kdb> [0]kdb> Signed-off-by: Doug Anderson <dianders@chromium.org> --- Changes in v2: - Moved from kdb to serial_core drivers/tty/serial/8250/8250_core.c | 5 ----- drivers/tty/serial/pch_uart.c | 5 ----- drivers/tty/serial/pxa.c | 5 ----- drivers/tty/serial/serial_core.c | 3 +++ drivers/tty/serial/serial_txx9.c | 5 ----- 5 files changed, 3 insertions(+), 20 deletions(-) diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c index 81f909c..ffee982 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -1926,13 +1926,8 @@ static void serial8250_put_poll_char(struct uart_port *port, wait_for_xmitr(up, BOTH_EMPTY); /* * Send the character out. - * If a LF, also do CR... */ serial_port_out(port, UART_TX, c); - if (c == 10) { - wait_for_xmitr(up, BOTH_EMPTY); - serial_port_out(port, UART_TX, 13); - } /* * Finally, wait for transmitter to become empty diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c index 0931b3f..11e631d 100644 --- a/drivers/tty/serial/pch_uart.c +++ b/drivers/tty/serial/pch_uart.c @@ -1588,13 +1588,8 @@ static void pch_uart_put_poll_char(struct uart_port *port, wait_for_xmitr(priv, UART_LSR_THRE); /* * Send the character out. - * If a LF, also do CR... */ iowrite8(c, priv->membase + PCH_UART_THR); - if (c == 10) { - wait_for_xmitr(priv, UART_LSR_THRE); - iowrite8(13, priv->membase + PCH_UART_THR); - } /* * Finally, wait for transmitter to become empty diff --git a/drivers/tty/serial/pxa.c b/drivers/tty/serial/pxa.c index f9f20f3..9e7ee39 100644 --- a/drivers/tty/serial/pxa.c +++ b/drivers/tty/serial/pxa.c @@ -711,13 +711,8 @@ static void serial_pxa_put_poll_char(struct uart_port *port, wait_for_xmitr(up); /* * Send the character out. - * If a LF, also do CR... */ serial_out(up, UART_TX, c); - if (c == 10) { - wait_for_xmitr(up); - serial_out(up, UART_TX, 13); - } /* * Finally, wait for transmitter to become empty diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index f26834d..5dba976 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2236,6 +2236,9 @@ static void uart_poll_put_char(struct tty_driver *driver, int line, char ch) return; port = state->uart_port; + + if (ch == '\n') + port->ops->poll_put_char(port, '\r'); port->ops->poll_put_char(port, ch); } #endif diff --git a/drivers/tty/serial/serial_txx9.c b/drivers/tty/serial/serial_txx9.c index 90a080b..60f49b9 100644 --- a/drivers/tty/serial/serial_txx9.c +++ b/drivers/tty/serial/serial_txx9.c @@ -535,13 +535,8 @@ static void serial_txx9_put_poll_char(struct uart_port *port, unsigned char c) wait_for_xmitr(up); /* * Send the character out. - * If a LF, also do CR... */ sio_out(up, TXX9_SITFIFO, c); - if (c == 10) { - wait_for_xmitr(up); - sio_out(up, TXX9_SITFIFO, 13); - } /* * Finally, wait for transmitter to become empty -- 1.9.1.423.g4596e3a ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] serial_core: Commonalize crlf when working w/ a non open console port 2014-04-21 17:06 ` [PATCH v2] serial_core: Commonalize crlf " Doug Anderson @ 2014-04-22 9:55 ` One Thousand Gnomes 0 siblings, 0 replies; 4+ messages in thread From: One Thousand Gnomes @ 2014-04-22 9:55 UTC (permalink / raw) To: Doug Anderson Cc: Greg Kroah-Hartman, Jason Wessel, linux-samsung-soc, olof, jslaby, paul.gortmaker, jg1.han, asierra, swarren, heikki.krogerus, jschultz, kyle, mingo, linux-serial, linux-kernel > I've moved the handling to uart_poll_put_char() to fix the above > problems. Now when I use kdb (and don't point console= to the same > UART) I no longer get: > > [0]kdb> > [0]kdb> > [0]kdb> > > Signed-off-by: Doug Anderson <dianders@chromium.org> This seems sensible Reviewed-by: Alan Cox <alan@linux.intel.com> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-04-22 9:57 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-04-18 17:17 [PATCH] kdb: Put a cr before lf when working w/ a non open console port Doug Anderson 2014-04-18 23:53 ` Doug Anderson 2014-04-21 17:06 ` [PATCH v2] serial_core: Commonalize crlf " Doug Anderson 2014-04-22 9:55 ` One Thousand Gnomes
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®