From: Ingo Molnar NMIs confuse lockdep, so we work around this problem by disabling NMI sources. The exact reason is not fully understood yet, but suspicion is on irq-disabling done within NMI handlers and this confusing the irq-flags tracing code - and hence confusing lockdep too. Another potential problem could be the entry.S return code for NMIs - if that doesnt trace irq flags correctly then that too could break lockdep. This issue is under investigation. Signed-off-by: Ingo Molnar Cc: Arjan van de Ven Signed-off-by: Andrew Morton --- arch/i386/kernel/nmi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff -puN arch/i386/kernel/nmi.c~lock-validator-disable-nmi-watchdog-if-config_lockdep-i386 arch/i386/kernel/nmi.c --- devel/arch/i386/kernel/nmi.c~lock-validator-disable-nmi-watchdog-if-config_lockdep-i386 2006-05-30 15:46:49.000000000 -0700 +++ devel-akpm/arch/i386/kernel/nmi.c 2006-05-30 15:46:49.000000000 -0700 @@ -741,6 +741,17 @@ static void stop_intel_arch_watchdog(voi void setup_apic_nmi_watchdog (void *unused) { +#ifdef CONFIG_LOCKDEP + /* + * The NMI watchdog uses spinlocks (notifier chains, etc.), + * so it's not lockdep-safe: + */ + nmi_watchdog = NMI_NONE; + printk("lockdep: disabled NMI watchdog.\n"); + + return; +#endif + /* only support LOCAL and IO APICs for now */ if ((nmi_watchdog != NMI_LOCAL_APIC) && (nmi_watchdog != NMI_IO_APIC)) _