• Ravikiran G Thirumalai's avatar
    [PATCH] x86: Fix boot hang due to nmi watchdog init code · 3667bf6d
    Ravikiran G Thirumalai authored
    2.6.19  stopped booting (or booted based on build/config) on our x86_64
    systems due to a bug introduced in 2.6.19.  check_nmi_watchdog schedules an
    IPI on all cpus to  busy wait on a flag, but fails to set the busywait
    flag if NMI functionality is disabled.  This causes the secondary cpus
    to spin in an endless loop, causing the kernel bootup to hang.
    Depending upon the build, the  busywait flag got overwritten (stack variable)
    and caused  the kernel to bootup on certain builds.  Following patch fixes
    the bug by setting the busywait flag before returning from check_nmi_watchdog.
    I guess using a stack variable is not good here as the calling function could
    potentially return while the busy wait loop is still spinning on the flag.
    
    AK: I redid the patch significantly to be cleaner
    Signed-off-by: default avatarRavikiran Thirumalai <kiran@scalex86.org>
    Signed-off-by: default avatarShai Fultheim <shai@scalex86.org>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
    3667bf6d
nmi.c 23.3 KB