lkml.org 
[lkml]   [2012]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/2] boot: ignore early NMIs
    On 03/10/2012 05:52 AM, H. Peter Anvin wrote:

    > Is there a reason to not just simply block these NMIs during the kexec
    > sequence?
    Ok, some background:

    In the reboot path to the kdump kernel we disable local interrupts
    and the APICs in native_machine_crash_shutdown() and reset the IDT
    in machine_kexec(), which leaves an in valid IDT installed.

    However, disabling the I/O APIC involves taking a lock, which in
    the event of a crash can is racy and can lead to a deadlock. To
    solve this issue Don wrote a patch that left the I/O APICs and
    the LAPIC of the crashing CPU untouched in the kdump reboot path,
    but this seemed to cause mysterious reboots in some systems.
    It turned out that an NMI coming from the perf based hardlockup
    detector was causing the system to triple fault. If a NMI happens
    to arrive in the window between the invalidation of the IDT in
    machine_kexec() and the configuration of the final IDT we will be
    in big trouble. In particular, the system will either triple fault
    or halt, depending on whether the NMI arrived before or after
    installing the early IDT.

    To tackle this issue we can either stop the hardlockup detector
    or disable the LAPIC (the NMIs needed by x86's hardlockup detector
    are generated using performance counters in the LAPIC), leaving
    the I/O APICs untouched. The second is simpler and I think it
    is the approach Don took to fix this issue in RHEL kernels.

    Unfortunately, this is not enough, we are still exposed to external
    NMIs not routed through the LAPIC. In other words, we have to make
    sure that we always have and IDT that is able to handle NMIs without
    seemingly random reboots and lockups. To achieve this goal we need
    to fix machine_kexec() and the early IDT handlers. The current patch
    set takes care of the latter.

    - Fernando



    \
     
     \ /
      Last update: 2012-03-12 06:47    [W:0.020 / U:31.860 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site