Messages in this thread | | | Date | Wed, 28 May 2008 21:16:20 +0400 | From | Cyrill Gorcunov <> | Subject | Re: [patch 06/11] x86: nmi_32/64.c - use apic_write_around instead of apic_write |
| |
[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 -
| |