|
@@ -548,7 +548,7 @@ static int kdb_search_string(char *searched, char *searchfor)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int vkdb_printf(const char *fmt, va_list ap)
|
|
|
+int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
|
|
|
{
|
|
|
int diag;
|
|
|
int linecount;
|
|
@@ -691,19 +691,20 @@ kdb_printit:
|
|
|
* Write to all consoles.
|
|
|
*/
|
|
|
retlen = strlen(kdb_buffer);
|
|
|
+ cp = (char *) printk_skip_level(kdb_buffer);
|
|
|
if (!dbg_kdb_mode && kgdb_connected) {
|
|
|
- gdbstub_msg_write(kdb_buffer, retlen);
|
|
|
+ gdbstub_msg_write(cp, retlen - (cp - kdb_buffer));
|
|
|
} else {
|
|
|
if (dbg_io_ops && !dbg_io_ops->is_console) {
|
|
|
- len = retlen;
|
|
|
- cp = kdb_buffer;
|
|
|
+ len = retlen - (cp - kdb_buffer);
|
|
|
+ cp2 = cp;
|
|
|
while (len--) {
|
|
|
- dbg_io_ops->write_char(*cp);
|
|
|
- cp++;
|
|
|
+ dbg_io_ops->write_char(*cp2);
|
|
|
+ cp2++;
|
|
|
}
|
|
|
}
|
|
|
while (c) {
|
|
|
- c->write(c, kdb_buffer, retlen);
|
|
|
+ c->write(c, cp, retlen - (cp - kdb_buffer));
|
|
|
touch_nmi_watchdog();
|
|
|
c = c->next;
|
|
|
}
|
|
@@ -711,7 +712,10 @@ kdb_printit:
|
|
|
if (logging) {
|
|
|
saved_loglevel = console_loglevel;
|
|
|
console_loglevel = CONSOLE_LOGLEVEL_SILENT;
|
|
|
- printk(KERN_INFO "%s", kdb_buffer);
|
|
|
+ if (printk_get_level(kdb_buffer) || src == KDB_MSGSRC_PRINTK)
|
|
|
+ printk("%s", kdb_buffer);
|
|
|
+ else
|
|
|
+ pr_info("%s", kdb_buffer);
|
|
|
}
|
|
|
|
|
|
if (KDB_STATE(PAGER)) {
|
|
@@ -844,7 +848,7 @@ int kdb_printf(const char *fmt, ...)
|
|
|
int r;
|
|
|
|
|
|
va_start(ap, fmt);
|
|
|
- r = vkdb_printf(fmt, ap);
|
|
|
+ r = vkdb_printf(KDB_MSGSRC_INTERNAL, fmt, ap);
|
|
|
va_end(ap);
|
|
|
|
|
|
return r;
|