diff options
Diffstat (limited to 'kernel/debug')
| -rw-r--r-- | kernel/debug/kdb/kdb_debugger.c | 4 | ||||
| -rw-r--r-- | kernel/debug/kdb/kdb_io.c | 11 | ||||
| -rw-r--r-- | kernel/debug/kdb/kdb_main.c | 15 |
3 files changed, 5 insertions, 25 deletions
diff --git a/kernel/debug/kdb/kdb_debugger.c b/kernel/debug/kdb/kdb_debugger.c index 8b68ce78ff17..be7b33b73d30 100644 --- a/kernel/debug/kdb/kdb_debugger.c +++ b/kernel/debug/kdb/kdb_debugger.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/kdb.h> | 12 | #include <linux/kdb.h> |
| 13 | #include <linux/kdebug.h> | 13 | #include <linux/kdebug.h> |
| 14 | #include <linux/export.h> | 14 | #include <linux/export.h> |
| 15 | #include <linux/hardirq.h> | ||
| 15 | #include "kdb_private.h" | 16 | #include "kdb_private.h" |
| 16 | #include "../debug_core.h" | 17 | #include "../debug_core.h" |
| 17 | 18 | ||
| @@ -52,6 +53,9 @@ int kdb_stub(struct kgdb_state *ks) | |||
| 52 | if (atomic_read(&kgdb_setting_breakpoint)) | 53 | if (atomic_read(&kgdb_setting_breakpoint)) |
| 53 | reason = KDB_REASON_KEYBOARD; | 54 | reason = KDB_REASON_KEYBOARD; |
| 54 | 55 | ||
| 56 | if (in_nmi()) | ||
| 57 | reason = KDB_REASON_NMI; | ||
| 58 | |||
| 55 | for (i = 0, bp = kdb_breakpoints; i < KDB_MAXBPT; i++, bp++) { | 59 | for (i = 0, bp = kdb_breakpoints; i < KDB_MAXBPT; i++, bp++) { |
| 56 | if ((bp->bp_enabled) && (bp->bp_addr == addr)) { | 60 | if ((bp->bp_enabled) && (bp->bp_addr == addr)) { |
| 57 | reason = KDB_REASON_BREAK; | 61 | reason = KDB_REASON_BREAK; |
diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index bb9520f0f6ff..0a69d2adc4f3 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c | |||
| @@ -715,9 +715,6 @@ kdb_printit: | |||
| 715 | /* check for having reached the LINES number of printed lines */ | 715 | /* check for having reached the LINES number of printed lines */ |
| 716 | if (kdb_nextline == linecount) { | 716 | if (kdb_nextline == linecount) { |
| 717 | char buf1[16] = ""; | 717 | char buf1[16] = ""; |
| 718 | #if defined(CONFIG_SMP) | ||
| 719 | char buf2[32]; | ||
| 720 | #endif | ||
| 721 | 718 | ||
| 722 | /* Watch out for recursion here. Any routine that calls | 719 | /* Watch out for recursion here. Any routine that calls |
| 723 | * kdb_printf will come back through here. And kdb_read | 720 | * kdb_printf will come back through here. And kdb_read |
| @@ -732,14 +729,6 @@ kdb_printit: | |||
| 732 | if (moreprompt == NULL) | 729 | if (moreprompt == NULL) |
| 733 | moreprompt = "more> "; | 730 | moreprompt = "more> "; |
| 734 | 731 | ||
| 735 | #if defined(CONFIG_SMP) | ||
| 736 | if (strchr(moreprompt, '%')) { | ||
| 737 | sprintf(buf2, moreprompt, get_cpu()); | ||
| 738 | put_cpu(); | ||
| 739 | moreprompt = buf2; | ||
| 740 | } | ||
| 741 | #endif | ||
| 742 | |||
| 743 | kdb_input_flush(); | 732 | kdb_input_flush(); |
| 744 | c = console_drivers; | 733 | c = console_drivers; |
| 745 | 734 | ||
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 1f91413edb87..31df1706b9a9 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c | |||
| @@ -139,11 +139,10 @@ static const int __nkdb_err = sizeof(kdbmsgs) / sizeof(kdbmsg_t); | |||
| 139 | static char *__env[] = { | 139 | static char *__env[] = { |
| 140 | #if defined(CONFIG_SMP) | 140 | #if defined(CONFIG_SMP) |
| 141 | "PROMPT=[%d]kdb> ", | 141 | "PROMPT=[%d]kdb> ", |
| 142 | "MOREPROMPT=[%d]more> ", | ||
| 143 | #else | 142 | #else |
| 144 | "PROMPT=kdb> ", | 143 | "PROMPT=kdb> ", |
| 145 | "MOREPROMPT=more> ", | ||
| 146 | #endif | 144 | #endif |
| 145 | "MOREPROMPT=more> ", | ||
| 147 | "RADIX=16", | 146 | "RADIX=16", |
| 148 | "MDCOUNT=8", /* lines of md output */ | 147 | "MDCOUNT=8", /* lines of md output */ |
| 149 | KDB_PLATFORM_ENV, | 148 | KDB_PLATFORM_ENV, |
| @@ -1236,18 +1235,6 @@ static int kdb_local(kdb_reason_t reason, int error, struct pt_regs *regs, | |||
| 1236 | *cmdbuf = '\0'; | 1235 | *cmdbuf = '\0'; |
| 1237 | *(cmd_hist[cmd_head]) = '\0'; | 1236 | *(cmd_hist[cmd_head]) = '\0'; |
| 1238 | 1237 | ||
| 1239 | if (KDB_FLAG(ONLY_DO_DUMP)) { | ||
| 1240 | /* kdb is off but a catastrophic error requires a dump. | ||
| 1241 | * Take the dump and reboot. | ||
| 1242 | * Turn on logging so the kdb output appears in the log | ||
| 1243 | * buffer in the dump. | ||
| 1244 | */ | ||
| 1245 | const char *setargs[] = { "set", "LOGGING", "1" }; | ||
| 1246 | kdb_set(2, setargs); | ||
| 1247 | kdb_reboot(0, NULL); | ||
| 1248 | /*NOTREACHED*/ | ||
| 1249 | } | ||
| 1250 | |||
| 1251 | do_full_getstr: | 1238 | do_full_getstr: |
| 1252 | #if defined(CONFIG_SMP) | 1239 | #if defined(CONFIG_SMP) |
| 1253 | snprintf(kdb_prompt_str, CMD_BUFLEN, kdbgetenv("PROMPT"), | 1240 | snprintf(kdb_prompt_str, CMD_BUFLEN, kdbgetenv("PROMPT"), |
