From: Ingo Molnar Do not enable the NMI watchdog by default. Now that we have lockdep i cannot remember the last time it caught a real bug, but the NMI watchdog can /cause/ problems. Furthermore, to the typical user, an NMI watchdog assert results in a total lockup anyway (if under X). In that sense, all that the NMI watchdog does is that it makes the system /less/ stable and /less/ debuggable. People can still enable it either after bootup via: echo 1 > /proc/sys/kernel/nmi or via the nmi_watchdog=1 or nmi_watchdog=2 boot options. Signed-off-by: Ingo Molnar Cc: Andi Kleen Acked-by: Alan Cox Signed-off-by: Andrew Morton --- arch/x86_64/kernel/apic.c | 1 - arch/x86_64/kernel/io_apic.c | 5 +---- arch/x86_64/kernel/nmi.c | 2 +- arch/x86_64/kernel/smpboot.c | 1 - include/asm-x86_64/nmi.h | 1 - 5 files changed, 2 insertions(+), 8 deletions(-) diff -puN arch/x86_64/kernel/apic.c~x86_64-do-not-enable-the-nmi-watchdog-by-default arch/x86_64/kernel/apic.c --- a/arch/x86_64/kernel/apic.c~x86_64-do-not-enable-the-nmi-watchdog-by-default +++ a/arch/x86_64/kernel/apic.c @@ -428,7 +428,6 @@ void __cpuinit setup_local_APIC (void) oldvalue, value); } - nmi_watchdog_default(); setup_apic_nmi_watchdog(NULL); apic_pm_activate(); } diff -puN arch/x86_64/kernel/io_apic.c~x86_64-do-not-enable-the-nmi-watchdog-by-default arch/x86_64/kernel/io_apic.c --- a/arch/x86_64/kernel/io_apic.c~x86_64-do-not-enable-the-nmi-watchdog-by-default +++ a/arch/x86_64/kernel/io_apic.c @@ -1657,7 +1657,6 @@ static inline void check_timer(void) */ unmask_IO_APIC_irq(0); if (!no_timer_check && timer_irq_works()) { - nmi_watchdog_default(); if (nmi_watchdog == NMI_IO_APIC) { disable_8259A_irq(0); setup_nmi(); @@ -1683,10 +1682,8 @@ static inline void check_timer(void) setup_ExtINT_IRQ0_pin(apic2, pin2, cfg->vector); if (timer_irq_works()) { apic_printk(APIC_VERBOSE," works.\n"); - nmi_watchdog_default(); - if (nmi_watchdog == NMI_IO_APIC) { + if (nmi_watchdog == NMI_IO_APIC) setup_nmi(); - } return; } /* diff -puN arch/x86_64/kernel/nmi.c~x86_64-do-not-enable-the-nmi-watchdog-by-default arch/x86_64/kernel/nmi.c --- a/arch/x86_64/kernel/nmi.c~x86_64-do-not-enable-the-nmi-watchdog-by-default +++ a/arch/x86_64/kernel/nmi.c @@ -183,7 +183,7 @@ static __cpuinit inline int nmi_known_cp } /* Run after command line and cpu_init init, but before all other checks */ -void nmi_watchdog_default(void) +static inline void nmi_watchdog_default(void) { if (nmi_watchdog != NMI_DEFAULT) return; diff -puN arch/x86_64/kernel/smpboot.c~x86_64-do-not-enable-the-nmi-watchdog-by-default arch/x86_64/kernel/smpboot.c --- a/arch/x86_64/kernel/smpboot.c~x86_64-do-not-enable-the-nmi-watchdog-by-default +++ a/arch/x86_64/kernel/smpboot.c @@ -868,7 +868,6 @@ static int __init smp_sanity_check(unsig */ void __init smp_prepare_cpus(unsigned int max_cpus) { - nmi_watchdog_default(); current_cpu_data = boot_cpu_data; current_thread_info()->cpu = 0; /* needed? */ set_cpu_sibling_map(0); diff -puN include/asm-x86_64/nmi.h~x86_64-do-not-enable-the-nmi-watchdog-by-default include/asm-x86_64/nmi.h --- a/include/asm-x86_64/nmi.h~x86_64-do-not-enable-the-nmi-watchdog-by-default +++ a/include/asm-x86_64/nmi.h @@ -59,7 +59,6 @@ extern void disable_timer_nmi_watchdog(v extern void enable_timer_nmi_watchdog(void); extern int nmi_watchdog_tick (struct pt_regs * regs, unsigned reason); -extern void nmi_watchdog_default(void); extern int setup_nmi_watchdog(char *); extern atomic_t nmi_active; _