• Ingo Molnar's avatar
    [PATCH] lockdep: locking API self tests · cae2ed9a
    Ingo Molnar authored
    Introduce DEBUG_LOCKING_API_SELFTESTS, which uses the generic lock debugging
    code's silent-failure feature to run a matrix of testcases.  There are 210
    testcases currently:
    
      +-----------------------
      | Locking API testsuite:
      +------------------------------+------+------+------+------+------+------+
                                     | spin |wlock |rlock |mutex | wsem | rsem |
      -------------------------------+------+------+------+------+------+------+
                         A-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                     A-B-B-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                 A-B-B-C-C-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                 A-B-C-A-B-C deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-B-C-C-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-C-D-B-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
             A-B-C-D-B-C-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                        double unlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
                     bad unlock order:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
      --------------------------------------+------+------+------+------+------+
                  recursive read-lock:             |  ok  |             |  ok  |
      --------------------------------------+------+------+------+------+------+
                    non-nested unlock:  ok  |  ok  |  ok  |  ok  |
      --------------------------------------+------+------+------+
         hard-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
         soft-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
         hard-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
         soft-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
           sirq-safe-A => hirqs-on/12:  ok  |  ok  |  ok  |
           sirq-safe-A => hirqs-on/21:  ok  |  ok  |  ok  |
             hard-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
             soft-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
             hard-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
             soft-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
        hard-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
        soft-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
          hard-irq lock-inversion/123:  ok  |  ok  |  ok  |
          soft-irq lock-inversion/123:  ok  |  ok  |  ok  |
          hard-irq lock-inversion/132:  ok  |  ok  |  ok  |
          soft-irq lock-inversion/132:  ok  |  ok  |  ok  |
          hard-irq lock-inversion/213:  ok  |  ok  |  ok  |
          soft-irq lock-inversion/213:  ok  |  ok  |  ok  |
          hard-irq lock-inversion/231:  ok  |  ok  |  ok  |
          soft-irq lock-inversion/231:  ok  |  ok  |  ok  |
          hard-irq lock-inversion/312:  ok  |  ok  |  ok  |
          soft-irq lock-inversion/312:  ok  |  ok  |  ok  |
          hard-irq lock-inversion/321:  ok  |  ok  |  ok  |
          soft-irq lock-inversion/321:  ok  |  ok  |  ok  |
          hard-irq read-recursion/123:  ok  |
          soft-irq read-recursion/123:  ok  |
          hard-irq read-recursion/132:  ok  |
          soft-irq read-recursion/132:  ok  |
          hard-irq read-recursion/213:  ok  |
          soft-irq read-recursion/213:  ok  |
          hard-irq read-recursion/231:  ok  |
          soft-irq read-recursion/231:  ok  |
          hard-irq read-recursion/312:  ok  |
          soft-irq read-recursion/312:  ok  |
          hard-irq read-recursion/321:  ok  |
          soft-irq read-recursion/321:  ok  |
      --------------------------------+-----+----------------
      Good, all 210 testcases passed! |
      --------------------------------+
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    cae2ed9a
Name
Last commit
Last update
Documentation Loading commit data...
arch Loading commit data...
block Loading commit data...
crypto Loading commit data...
drivers Loading commit data...
fs Loading commit data...
include Loading commit data...
init Loading commit data...
ipc Loading commit data...
kernel Loading commit data...
lib Loading commit data...
mm Loading commit data...
net Loading commit data...
scripts Loading commit data...
security Loading commit data...
sound Loading commit data...
usr Loading commit data...
.gitignore Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
Kbuild Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README Loading commit data...
REPORTING-BUGS Loading commit data...