nmi_watchdog: Config option to enable new nmi_watchdog
These are the bits that enable the new nmi_watchdog and safely isolate the old nmi_watchdog. Only one or the other can run, not both at the same time. Signed-off-by: Don Zickus <dzickus@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: gorcunov@gmail.com Cc: aris@redhat.com Cc: peterz@infradead.org LKML-Reference: <1265424425-31562-4-git-send-email-dzickus@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
1fb9d6ad27
commit
84e478c6f1
5 changed files with 26 additions and 1 deletions
|
@ -2,7 +2,12 @@
|
|||
# Makefile for local APIC drivers and for the IO-APIC code
|
||||
#
|
||||
|
||||
obj-$(CONFIG_X86_LOCAL_APIC) += apic.o apic_noop.o probe_$(BITS).o ipi.o nmi.o
|
||||
obj-$(CONFIG_X86_LOCAL_APIC) += apic.o apic_noop.o probe_$(BITS).o ipi.o
|
||||
ifneq ($(CONFIG_NMI_WATCHDOG),y)
|
||||
obj-$(CONFIG_X86_LOCAL_APIC) += nmi.o
|
||||
endif
|
||||
obj-$(CONFIG_NMI_WATCHDOG) += hw_nmi.o
|
||||
|
||||
obj-$(CONFIG_X86_IO_APIC) += io_apic.o
|
||||
obj-$(CONFIG_SMP) += ipi.o
|
||||
|
||||
|
|
|
@ -406,6 +406,7 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
|
|||
== NOTIFY_STOP)
|
||||
return;
|
||||
|
||||
#ifndef CONFIG_NMI_WATCHDOG
|
||||
/*
|
||||
* Ok, so this is none of the documented NMI sources,
|
||||
* so it must be the NMI watchdog.
|
||||
|
@ -413,6 +414,7 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
|
|||
if (nmi_watchdog_tick(regs, reason))
|
||||
return;
|
||||
if (!do_nmi_callback(regs, cpu))
|
||||
#endif /* !CONFIG_NMI_WATCHDOG */
|
||||
unknown_nmi_error(reason, regs);
|
||||
#else
|
||||
unknown_nmi_error(reason, regs);
|
||||
|
|
|
@ -47,4 +47,8 @@ static inline bool trigger_all_cpu_backtrace(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NMI_WATCHDOG
|
||||
int hw_nmi_is_cpu_stuck(struct pt_regs *);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -76,6 +76,7 @@ obj-$(CONFIG_AUDIT_TREE) += audit_tree.o
|
|||
obj-$(CONFIG_KPROBES) += kprobes.o
|
||||
obj-$(CONFIG_KGDB) += kgdb.o
|
||||
obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o
|
||||
obj-$(CONFIG_NMI_WATCHDOG) += nmi_watchdog.o
|
||||
obj-$(CONFIG_DETECT_HUNG_TASK) += hung_task.o
|
||||
obj-$(CONFIG_GENERIC_HARDIRQS) += irq/
|
||||
obj-$(CONFIG_SECCOMP) += seccomp.o
|
||||
|
|
|
@ -170,6 +170,19 @@ config DETECT_SOFTLOCKUP
|
|||
can be detected via the NMI-watchdog, on platforms that
|
||||
support it.)
|
||||
|
||||
config NMI_WATCHDOG
|
||||
bool "Detect Hard Lockups with an NMI Watchdog"
|
||||
depends on DEBUG_KERNEL && PERF_EVENTS
|
||||
default y
|
||||
help
|
||||
Say Y here to enable the kernel to use the NMI as a watchdog
|
||||
to detect hard lockups. This is useful when a cpu hangs for no
|
||||
reason but can still respond to NMIs. A backtrace is displayed
|
||||
for reviewing and reporting.
|
||||
|
||||
The overhead should be minimal, just an extra NMI every few
|
||||
seconds.
|
||||
|
||||
config BOOTPARAM_SOFTLOCKUP_PANIC
|
||||
bool "Panic (Reboot) On Soft Lockups"
|
||||
depends on DETECT_SOFTLOCKUP
|
||||
|
|
Loading…
Reference in a new issue