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

From: Cyrill Gorcunov
Date: Wed May 28 2008 - 13:16:41 EST


[Maciej W. Rozycki - Wed, May 28, 2008 at 06:09:38PM +0100]
| 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
|

Thanks a lot, Maciej!!! Could you please explain me how did you find
that? 'cause reporter said that with nmi_watchdog=2 it works and with
nmi_watchdog=1 it stalls? Maybe I should better make this function
the same as 64bit version has? I.e. set nmi_watchdog = NMI_NONE by default?

- Cyrill -
--
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/