diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-18 11:37:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-18 11:37:01 -0400 |
commit | 9732b6112343df2872518ec6701c8ef729310a05 (patch) | |
tree | 9e3dcc461845038da4730c2062eee546348ca445 /arch/x86/kernel/traps_64.c | |
parent | 9e9abecfc0ff3a9ad2ead954b37bbfcb863c775e (diff) | |
parent | 1a9a3e76dde191f82f7a8a66059dcbb4a9f63ff3 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb
* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb:
kgdb: always use icache flush for sw breakpoints
kgdb: fix SMP NMI kgdb_handle_exception exit race
kgdb: documentation fixes
kgdb: allow static kgdbts boot configuration
kgdb: add documentation
kgdb: Kconfig fix
kgdb: add kgdb internal test suite
kgdb: fix several kgdb regressions
kgdb: kgdboc pl011 I/O module
kgdb: fix optional arch functions and probe_kernel_*
kgdb: add x86 HW breakpoints
kgdb: print breakpoint removed on exception
kgdb: clocksource watchdog
kgdb: fix NMI hangs
kgdb: fix kgdboc dynamic module configuration
kgdb: document parameters
x86: kgdb support
consoles: polling support, kgdboc
kgdb: core
uaccess: add probe_kernel_write()
Diffstat (limited to 'arch/x86/kernel/traps_64.c')
-rw-r--r-- | arch/x86/kernel/traps_64.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/kernel/traps_64.c b/arch/x86/kernel/traps_64.c index 33292ac814f4..79aa6fc0815c 100644 --- a/arch/x86/kernel/traps_64.c +++ b/arch/x86/kernel/traps_64.c | |||
@@ -602,8 +602,13 @@ void die(const char * str, struct pt_regs * regs, long err) | |||
602 | 602 | ||
603 | void __kprobes die_nmi(char *str, struct pt_regs *regs, int do_panic) | 603 | void __kprobes die_nmi(char *str, struct pt_regs *regs, int do_panic) |
604 | { | 604 | { |
605 | unsigned long flags = oops_begin(); | 605 | unsigned long flags; |
606 | 606 | ||
607 | if (notify_die(DIE_NMIWATCHDOG, str, regs, 0, 2, SIGINT) == | ||
608 | NOTIFY_STOP) | ||
609 | return; | ||
610 | |||
611 | flags = oops_begin(); | ||
607 | /* | 612 | /* |
608 | * We are in trouble anyway, lets at least try | 613 | * We are in trouble anyway, lets at least try |
609 | * to get a message out. | 614 | * to get a message out. |
@@ -808,6 +813,8 @@ io_check_error(unsigned char reason, struct pt_regs * regs) | |||
808 | static __kprobes void | 813 | static __kprobes void |
809 | unknown_nmi_error(unsigned char reason, struct pt_regs * regs) | 814 | unknown_nmi_error(unsigned char reason, struct pt_regs * regs) |
810 | { | 815 | { |
816 | if (notify_die(DIE_NMIUNKNOWN, "nmi", regs, reason, 2, SIGINT) == NOTIFY_STOP) | ||
817 | return; | ||
811 | printk(KERN_EMERG "Uhhuh. NMI received for unknown reason %02x.\n", | 818 | printk(KERN_EMERG "Uhhuh. NMI received for unknown reason %02x.\n", |
812 | reason); | 819 | reason); |
813 | printk(KERN_EMERG "Do you have a strange power saving mode enabled?\n"); | 820 | printk(KERN_EMERG "Do you have a strange power saving mode enabled?\n"); |