Re: [patch 06/11] x86: nmi_32/64.c - use apic_write_around insteadof apic_write

From: Maciej W. Rozycki
Date: Wed May 28 2008 - 13:10:43 EST


On Wed, 28 May 2008, Cyrill Gorcunov wrote:

> So I've moved a part of code (32bit) from proc_nmi_enabled() to
> nmi_watchdog_default() BUT this nmi_watchdog_default() also called
> from smpboot.c:native_smp_prepare_cpus() and before this patch
> this call was just an empty call (and eliminated by gcc I think)
> now it's not empy. But how it leads to hang I can't understand.
> The only thing is done - nmi_watchdog is set to NMI_LOCAL_APIC
> or NMI_IO_APIC and my only suspicious is that something happens
> asynchronously and leads to machine hang. Let me know if I wrote
> in obscure manner.

The problem is the I/O APIC NMI watchdog which does not work correctly on
the reporter's machine. Your patch makes the NMI watchdog be enabled by
default on 32-bit platforms (OTOH, proc_nmi_enabled() is only called by an
explicit request via sysctl). Unfortunately many hardware vendors have
not fully recognised the existence of Linux yet and the NMI watchdog
frequently triggers breakage in SMM firmware even on modern equipment;
actually it was less likely to break in the old days.

Maciej
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/