Messages in this thread | | | Date | Wed, 28 May 2008 18:09:38 +0100 (BST) | From | "Maciej W. Rozycki" <> | Subject | Re: [patch 06/11] x86: nmi_32/64.c - use apic_write_around instead of apic_write |
| |
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
| |