diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-08-03 13:53:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-08-03 13:53:47 -0400 |
commit | d97e1dcde5e19ed1f828baff4ab5fd0e517c8dae (patch) | |
tree | b383820ad8075479d31168cc35aabbb3bed35736 | |
parent | 587a9e1f95794c05419d3bdb4c409a3274849f93 (diff) | |
parent | f96a4216e85050c0a9d41a41ecb0ae9d8e39b509 (diff) |
Merge tag 'for_linux-3.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb
Pull KGDB/KDB/usb-dbgp fixes and cleanups from Jason Wessel:
"There are no new features, those will be delayed to the 3.7 window.
There are only fixes/cleanup against the usual kernel churn and we are
removing more lines than we add:
- usb-dbgp - increase the controller wait time to come out of halt.
- kdb - Remove unused KDB_FLAG_ONLY_DO_DUMP code and cpu in more prompt
- debug core - pass NMI type on archs that provide NMI types"
* tag 'for_linux-3.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb:
USB: echi-dbgp: increase the controller wait time to come out of halt.
kernel/debug: Make use of KGDB_REASON_NMI
kdb: Remove cpu from the more prompt
kdb: Remove unused KDB_FLAG_ONLY_DO_DUMP
-rw-r--r-- | drivers/usb/early/ehci-dbgp.c | 2 | ||||
-rw-r--r-- | include/linux/kdb.h | 2 | ||||
-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 |
5 files changed, 6 insertions, 28 deletions
diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c index ee0ebacf8227..89dcf155d57e 100644 --- a/drivers/usb/early/ehci-dbgp.c +++ b/drivers/usb/early/ehci-dbgp.c | |||
@@ -450,7 +450,7 @@ static int dbgp_ehci_startup(void) | |||
450 | writel(FLAG_CF, &ehci_regs->configured_flag); | 450 | writel(FLAG_CF, &ehci_regs->configured_flag); |
451 | 451 | ||
452 | /* Wait until the controller is no longer halted */ | 452 | /* Wait until the controller is no longer halted */ |
453 | loop = 10; | 453 | loop = 1000; |
454 | do { | 454 | do { |
455 | status = readl(&ehci_regs->status); | 455 | status = readl(&ehci_regs->status); |
456 | if (!(status & STS_HALT)) | 456 | if (!(status & STS_HALT)) |
diff --git a/include/linux/kdb.h b/include/linux/kdb.h index 064725854db8..42d9e863a313 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h | |||
@@ -75,8 +75,6 @@ extern const char *kdb_diemsg; | |||
75 | #define KDB_FLAG_CATASTROPHIC (1 << 1) /* A catastrophic event has occurred */ | 75 | #define KDB_FLAG_CATASTROPHIC (1 << 1) /* A catastrophic event has occurred */ |
76 | #define KDB_FLAG_CMD_INTERRUPT (1 << 2) /* Previous command was interrupted */ | 76 | #define KDB_FLAG_CMD_INTERRUPT (1 << 2) /* Previous command was interrupted */ |
77 | #define KDB_FLAG_NOIPI (1 << 3) /* Do not send IPIs */ | 77 | #define KDB_FLAG_NOIPI (1 << 3) /* Do not send IPIs */ |
78 | #define KDB_FLAG_ONLY_DO_DUMP (1 << 4) /* Only do a dump, used when | ||
79 | * kdb is off */ | ||
80 | #define KDB_FLAG_NO_CONSOLE (1 << 5) /* No console is available, | 78 | #define KDB_FLAG_NO_CONSOLE (1 << 5) /* No console is available, |
81 | * kdb is disabled */ | 79 | * kdb is disabled */ |
82 | #define KDB_FLAG_NO_VT_CONSOLE (1 << 6) /* No VT console is available, do | 80 | #define KDB_FLAG_NO_VT_CONSOLE (1 << 6) /* No VT console is available, do |
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"), |