dotest
dotest(remote_ipi, SUCCESS);
dotest(local_ipi, SUCCESS);
#define dotest_rt(fn, e, m) dotest((fn), (e), (m))
dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN); \
dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN|LOCKTYPE_RWLOCK);\
dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_spin, FAILURE, LOCKTYPE_SPIN); \
dotest(name##_wlock, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_rlock, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \
dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \
dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \
dotest(name##_spin, SUCCESS, LOCKTYPE_SPIN); \
dotest(name##_wlock, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_rlock, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_mutex, SUCCESS, LOCKTYPE_MUTEX); \
dotest(name##_wsem, SUCCESS, LOCKTYPE_RWSEM); \
dotest(name##_rsem, SUCCESS, LOCKTYPE_RWSEM); \
dotest(name##_spin, FAILURE, LOCKTYPE_SPIN); \
dotest(name##_wlock, FAILURE, LOCKTYPE_RWLOCK); \
dotest(name##_rlock, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \
dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \
dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \
dotest(ww_test_fail_acquire, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_normal, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_unneeded_slow, FAILURE, LOCKTYPE_WW);
dotest(ww_test_two_contexts, FAILURE, LOCKTYPE_WW);
dotest(ww_test_diff_class, FAILURE, LOCKTYPE_WW);
dotest(ww_test_context_done_twice, FAILURE, LOCKTYPE_WW);
dotest(ww_test_context_unlock_twice, FAILURE, LOCKTYPE_WW);
dotest(ww_test_context_fini_early, FAILURE, LOCKTYPE_WW);
dotest(ww_test_context_lock_after_done, FAILURE, LOCKTYPE_WW);
dotest(ww_test_object_unlock_twice, FAILURE, LOCKTYPE_WW);
dotest(ww_test_object_lock_unbalanced, FAILURE, LOCKTYPE_WW);
dotest(ww_test_object_lock_stale_context, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_normal, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_edeadlk_normal_slow, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_edeadlk_no_unlock, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_no_unlock_slow, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_acquire_more, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_acquire_more_slow, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_acquire_more_edeadlk, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_acquire_more_edeadlk_slow, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_acquire_wrong, FAILURE, LOCKTYPE_WW);
dotest(ww_test_edeadlk_acquire_wrong_slow, FAILURE, LOCKTYPE_WW);
dotest(ww_test_spin_nest_unlocked, FAILURE, LOCKTYPE_WW);
dotest(ww_test_spin_nest_lock, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_context_block, FAILURE, LOCKTYPE_WW);
dotest(ww_test_context_try, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_context_context, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_try_block, FAILURE, LOCKTYPE_WW);
dotest(ww_test_try_try, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_try_context, FAILURE, LOCKTYPE_WW);
dotest(ww_test_block_block, FAILURE, LOCKTYPE_WW);
dotest(ww_test_block_try, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_block_context, FAILURE, LOCKTYPE_WW);
dotest(ww_test_spin_block, FAILURE, LOCKTYPE_WW);
dotest(ww_test_spin_try, SUCCESS, LOCKTYPE_WW);
dotest(ww_test_spin_context, FAILURE, LOCKTYPE_WW);
dotest(queued_read_lock_hardirq_RE_Er, FAILURE, LOCKTYPE_RWLOCK);
dotest(queued_read_lock_hardirq_ER_rE, SUCCESS, LOCKTYPE_RWLOCK);
dotest(queued_read_lock_hardirq_inversion, FAILURE, LOCKTYPE_RWLOCK);
dotest(fs_reclaim_correct_nesting, SUCCESS, 0);
dotest(fs_reclaim_wrong_nesting, FAILURE, 0);
dotest(fs_reclaim_protected_nesting, SUCCESS, 0);
dotest(RCU_in_##outer, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(raw_spinlock_in_##outer, SUCCESS, LOCKTYPE_SPIN); \
dotest(spinlock_in_##outer, SUCCESS, LOCKTYPE_SPIN); \
dotest(mutex_in_##outer, SUCCESS, LOCKTYPE_MUTEX); \
dotest(RCU_in_##outer, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(raw_spinlock_in_##outer, SUCCESS, LOCKTYPE_SPIN); \
dotest(spinlock_in_##outer, SUCCESS, LOCKTYPE_SPIN); \
dotest(mutex_in_##outer, FAILURE, LOCKTYPE_MUTEX); \
dotest(RCU_in_##outer, SUCCESS, LOCKTYPE_RWLOCK); \
dotest(raw_spinlock_in_##outer, SUCCESS, LOCKTYPE_SPIN); \
dotest(spinlock_in_##outer, FAILURE, LOCKTYPE_SPIN); \
dotest(mutex_in_##outer, FAILURE, LOCKTYPE_MUTEX); \
dotest(test_lockdep_set_subclass_name, SUCCESS, LOCKTYPE_RWSEM);
dotest(local_lock_2, SUCCESS, LOCKTYPE_LL);
dotest(local_lock_3A, SUCCESS, LOCKTYPE_LL);
dotest(local_lock_3B, FAILURE, LOCKTYPE_LL);
dotest(rlock_AA1, SUCCESS, LOCKTYPE_RWLOCK);
dotest(rsem_AA1, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_AA1B, SUCCESS, LOCKTYPE_RWLOCK);
dotest(rsem_AA1B, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_AA2, FAILURE, LOCKTYPE_RWLOCK);
dotest(rsem_AA2, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_AA3, FAILURE, LOCKTYPE_RWLOCK);
dotest(rsem_AA3, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_ABBA1, FAILURE, LOCKTYPE_RWLOCK);
dotest(rwsem_ABBA1, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_ABBA2, SUCCESS, LOCKTYPE_RWLOCK);
dotest(rwsem_ABBA2, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_ABBA3, FAILURE, LOCKTYPE_RWLOCK);
dotest(rwsem_ABBA3, FAILURE, LOCKTYPE_RWSEM);
dotest(rlock_chaincache_ABBA1, FAILURE, LOCKTYPE_RWLOCK);
dotest(hardirq_deadlock_softirq_not_deadlock, FAILURE, LOCKTYPE_SPECIAL);