Skip to content
  • Ulrich Obergfell's avatar
    watchdog: new definitions and variables, initialization · 84d56e66
    Ulrich Obergfell authored
    
    
    The hardlockup and softockup had always been tied together.  Due to the
    request of KVM folks, they had a need to have one enabled but not the
    other.  Internally rework the code to split things apart more cleanly.
    
    There is a bunch of churn here, but the end result should be code that
    should be easier to maintain and fix without knowing the internals of what
    is going on.
    
    This patch (of 9):
    
    Introduce new definitions and variables to separate the user interface in
    /proc/sys/kernel from the internal run state of the lockup detectors.  The
    internal run state is represented by two bits in a new variable that is
    named 'watchdog_enabled'.  This helps simplify the code, for example:
    
    - In order to check if any of the two lockup detectors is enabled,
      it is sufficient to check if 'watchdog_enabled' is not zero.
    
    - In order to enable/disable one or both lockup detectors,
      it is sufficient to set/clear one or both bits in 'watchdog_enabled'.
    
    - Concurrent updates of 'watchdog_enabled' need not be synchronized via
      a spinlock or a mutex. Updates can either be atomic or concurrency can
      be detected by using 'cmpxchg'.
    
    Signed-off-by: default avatarUlrich Obergfell <uobergfe@redhat.com>
    Signed-off-by: default avatarDon Zickus <dzickus@redhat.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    84d56e66