Commit b2bb65f6 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt

powerpc/xmon: Fallback to printk() in xmon_printf() if udbg is not setup

It is possible to configure a kernel which has xmon enabled, but has no
udbg backend to provide IO. This can make xmon rather confusing, as it
produces no output, blocks for two seconds, and then returns.

As a last resort we can instead try to printk(), which may deadlock or
otherwise crash, but tries quite hard not to.
Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 0104cd68
...@@ -111,13 +111,19 @@ char *xmon_gets(char *str, int nb) ...@@ -111,13 +111,19 @@ char *xmon_gets(char *str, int nb)
void xmon_printf(const char *format, ...) void xmon_printf(const char *format, ...)
{ {
va_list args; va_list args;
int n;
static char xmon_outbuf[1024]; static char xmon_outbuf[1024];
int rc, n;
va_start(args, format); va_start(args, format);
n = vsnprintf(xmon_outbuf, sizeof(xmon_outbuf), format, args); n = vsnprintf(xmon_outbuf, sizeof(xmon_outbuf), format, args);
va_end(args); va_end(args);
xmon_write(xmon_outbuf, n);
rc = xmon_write(xmon_outbuf, n);
if (n && rc == 0) {
/* No udbg hooks, fallback to printk() - dangerous */
printk(xmon_outbuf);
}
} }
void xmon_puts(const char *str) void xmon_puts(const char *str)
......
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