Commit 7db60d05 authored by Vijay Kumar's avatar Vijay Kumar Committed by David S. Miller

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: default avatarVijay Kumar <vijay.ac.kumar@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7dd4fcf5
...@@ -116,7 +116,7 @@ static int receive_chars_getchar(struct uart_port *port) ...@@ -116,7 +116,7 @@ static int receive_chars_getchar(struct uart_port *port)
static int receive_chars_read(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; int limit = 10000;
while (limit-- > 0) { while (limit-- > 0) {
...@@ -128,6 +128,9 @@ static int receive_chars_read(struct uart_port *port) ...@@ -128,6 +128,9 @@ static int receive_chars_read(struct uart_port *port)
bytes_read = 0; bytes_read = 0;
if (stat == CON_BREAK) { if (stat == CON_BREAK) {
if (saw_console_brk)
sun_do_break();
if (uart_handle_break(port)) if (uart_handle_break(port))
continue; continue;
saw_console_brk = 1; saw_console_brk = 1;
...@@ -151,6 +154,7 @@ static int receive_chars_read(struct uart_port *port) ...@@ -151,6 +154,7 @@ static int receive_chars_read(struct uart_port *port)
if (port->sysrq != 0 && *con_read_page) { if (port->sysrq != 0 && *con_read_page) {
for (i = 0; i < bytes_read; i++) for (i = 0; i < bytes_read; i++)
uart_handle_sysrq_char(port, con_read_page[i]); uart_handle_sysrq_char(port, con_read_page[i]);
saw_console_brk = 0;
} }
if (port->state == NULL) if (port->state == NULL)
......
...@@ -273,7 +273,8 @@ void panic(const char *fmt, ...) ...@@ -273,7 +273,8 @@ void panic(const char *fmt, ...)
extern int stop_a_enabled; extern int stop_a_enabled;
/* Make sure the user can actually press Stop-A (L1-A) */ /* Make sure the user can actually press Stop-A (L1-A) */
stop_a_enabled = 1; 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 #endif
#if defined(CONFIG_S390) #if defined(CONFIG_S390)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment