• Aaron Tomlin's avatar
    kernel/watchdog.c: print traces for all cpus on lockup detection · ed235875
    Aaron Tomlin authored
    A 'softlockup' is defined as a bug that causes the kernel to loop in
    kernel mode for more than a predefined period to time, without giving
    other tasks a chance to run.
    
    Currently, upon detection of this condition by the per-cpu watchdog
    task, debug information (including a stack trace) is sent to the system
    log.
    
    On some occasions, we have observed that the "victim" rather than the
    actual "culprit" (i.e.  the owner/holder of the contended resource) is
    reported to the user.  Often this information has proven to be
    insufficient to assist debugging efforts.
    
    To avoid loss of useful debug information, for architectures which
    support NMI, this patch makes it possible to improve soft lockup
    reporting.  This is accomplished by issuing an NMI to each cpu to obtain
    a stack trace.
    
    If NMI is not supported we just revert back to the old method.  A sysctl
    and boot-time parameter is available to toggle this feature.
    
    [dzickus@redhat.com: add CONFIG_SMP in certain areas]
    [akpm@linux-foundation.org: additional CONFIG_SMP=n optimisations]
    [mq@suse.cz: fix warning]
    Signed-off-by: default avatarAaron Tomlin <atomlin@redhat.com>
    Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Mateusz Guzik <mguzik@redhat.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: default avatarJan Moskyto Matejka <mq@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ed235875
watchdog.c 16.9 KB