All of lore.kernel.org
 help / color / mirror / Atom feed
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


             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 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.