From: Deepak Saxena <dsaxena@plexity.net>
To: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: torvalds@linux-foundation.org
Subject: [PATCH] 8250: Don't restore NS16550 mode when console suspend is disabled
Date: Tue, 12 May 2009 21:00:16 +0000 [thread overview]
Message-ID: <20090512210015.GA25540@plexity.net> (raw)
Commit b5b82df6, from May 2007, breaks no_console_suspend on the OLPC
XO laptop. Basically what happens is that upon returning from resume,
serial8250_resume_port() will reconfigure the port for high speed
mode and all console output will be garbled, making debug of the
resume path painful. This patch modifies serial8250_resume_port() to
not touch the port in the case where it is the console port and console
suspend is disabled.
Signed-off-by: Deepak Saxena <dsaxena@laptop.org>
---
The OLPC tree has been carrying a workaround for about two years but
this patch is not the version we've been using. That one can be
found at http://dev.laptop.org/~dsaxena/patches/console_suspend_old.patch.
I prefer the approach of handling this in the 8250 driver itself.
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index b4b3981..d4b6373 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -2887,7 +2887,8 @@ void serial8250_resume_port(int line)
{
struct uart_8250_port *up = &serial8250_ports[line];
- if (up->capabilities & UART_NATSEMI) {
+ if ((up->capabilities & UART_NATSEMI) &&
+ (!uart_console(&up->port) && console_suspend_enabled)) {
unsigned char tmp;
/* Ensure it's still in high speed mode */
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
index b0bb29d..05fd868 100644
--- a/drivers/serial/serial_core.c
+++ b/drivers/serial/serial_core.c
@@ -54,12 +54,6 @@ static struct lock_class_key port_lock_key;
#define uart_users(state) ((state)->count + (state)->info.port.blocked_open)
-#ifdef CONFIG_SERIAL_CORE_CONSOLE
-#define uart_console(port) ((port)->cons && (port)->cons->index == (port)->line)
-#else
-#define uart_console(port) (0)
-#endif
-
static void uart_change_speed(struct uart_state *state,
struct ktermios *old_termios);
static void uart_wait_until_sent(struct tty_struct *tty, int timeout);
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index 57a97e5..9fba77a 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -427,6 +427,12 @@ struct tty_driver *uart_console_device(struct console *co, int *index);
void uart_console_write(struct uart_port *port, const char *s,
unsigned int count,
void (*putchar)(struct uart_port *, int));
+#ifdef CONFIG_SERIAL_CORE_CONSOLE
+#define uart_console(port) ((port)->cons && (port)->cons->index == (port)->line)
+#else
+#define uart_console(port) (0)
+#endif
+
/*
* Port/driver registration/removal
--
In the end, they will not say, "those were dark times," they will ask
"why were their poets silent?" - Bertold Brecht
next reply other threads:[~2009-05-12 21:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-12 21:00 Deepak Saxena [this message]
2009-05-12 22:00 ` [PATCH] 8250: Don't restore NS16550 mode when console suspend is disabled Linus Torvalds
2009-05-13 0:18 ` Alan Cox
2009-05-13 0:28 ` Deepak Saxena
2009-05-13 8:44 ` Alan Cox
2009-05-13 14:58 ` Linus Torvalds
2009-05-13 15:35 ` Alan Cox
2009-05-13 18:04 ` Deepak Saxena
2009-05-13 18:46 ` Alan Cox
2009-05-18 18:24 ` Deepak Saxena
2009-05-18 19:07 ` Alan Cox
2009-05-13 1:01 ` Joe Perches
2009-05-13 0:34 ` Deepak Saxena
2009-05-12 22:08 ` Michał Mirosław
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=20090512210015.GA25540@plexity.net \
--to=dsaxena@plexity.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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