04 Jul, 2006

1 commit

  • 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: Ingo Molnar
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar