• Andrew Morton's avatar
    [PATCH] NMI watchdog fix · e28b748d
    Andrew Morton authored
    From: William Lee Irwin III <wli@holomorphy.com>
    
    The NMI watchdog has two different "modes": NMI_IO_APIC, which delivers NMI's
    through the IO-APIC, and NMI_LOCAL_APIC, which uses the local APIC vector
    table (LVT) to deliver the periodic NMI's.
    
    Only NMI_IO_APIC requires being able to set up the PIT so it can deliver
    NMI's through the IO-APIC, and so NMI_LOCAL_APIC has no dependency on the
    timer being set up through the IO-APIC and is unjustifiably disabled by
    check_timer() when the PIT cannot deliver interrupts through the IO-APIC.
    
    This is important because one of the most important uses of NMI_LOCAL_APIC is
    to get the NMI watchdog going when NMI_IO_APIC doesn't work.
    
    So what this patch does to repair the situation is instead of checking to see
    if the NMI watchdog is enabled at all, it instead checks whether the NMI
    watchdog is being used in NMI_IO_APIC mode when a failure to set up the NMI
    timer interrupt through the IO-APIC occurs.
    e28b748d
io_apic.c 58.4 KB