From: Vijay Kumar Date: Wed, 1 Feb 2017 19:34:39 +0000 (-0800) Subject: sparc64: Send break twice from console to return to boot prom X-Git-Tag: v4.1.12-104.0.20170618_1145~119 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ca964351df085e017619fc49e05f559928ea8f39;p=users%2Fjedix%2Flinux-maple.git sparc64: Send break twice from console to return to boot prom Now we can also jump to boot prom from sunhv console by sending break twice on console for both running and panicked kernel cases. Signed-off-by: Vijay Kumar Signed-off-by: David S. Miller (cherry picked from commit 7db60d05e5ccc0a473fa2275f90f2fca0002ab21) Signed-off-by: Vijay Kumar Orabug: 24297427 --- diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c index 6e84e857a0b7..8e737446f3e0 100644 --- a/drivers/tty/serial/sunhv.c +++ b/drivers/tty/serial/sunhv.c @@ -123,7 +123,7 @@ static int receive_chars_getchar(struct uart_port *port) static int receive_chars_read(struct uart_port *port) { - int saw_console_brk = 0; + static int saw_console_brk; int limit = 10000; while (limit-- > 0) { @@ -135,6 +135,9 @@ static int receive_chars_read(struct uart_port *port) bytes_read = 0; if (stat == CON_BREAK) { + if (saw_console_brk) + sun_do_break(); + if (uart_handle_break(port)) continue; saw_console_brk = 1; @@ -158,6 +161,7 @@ static int receive_chars_read(struct uart_port *port) if (port->sysrq != 0 && *con_read_page) { for (i = 0; i < bytes_read; i++) uart_handle_sysrq_char(port, con_read_page[i]); + saw_console_brk = 0; } if (port->state == NULL) diff --git a/kernel/panic.c b/kernel/panic.c index 1f34bad2e354..21cf87a71e18 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -229,7 +229,8 @@ void panic(const char *fmt, ...) extern int stop_a_enabled; /* Make sure the user can actually press Stop-A (L1-A) */ stop_a_enabled = 1; - pr_emerg("Press Stop-A (L1-A) to return to the boot prom\n"); + pr_emerg("Press Stop-A (L1-A) from sun keyboard or send break\n" + "twice on console to return to the boot prom\n"); } #endif #if defined(CONFIG_S390)