diff options
Diffstat (limited to 'lib/locking-selftest.c')
-rw-r--r-- | lib/locking-selftest.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c index 619313ed6c46..65e7eab8498e 100644 --- a/lib/locking-selftest.c +++ b/lib/locking-selftest.c | |||
@@ -158,7 +158,7 @@ static void init_shared_classes(void) | |||
158 | local_bh_disable(); \ | 158 | local_bh_disable(); \ |
159 | local_irq_disable(); \ | 159 | local_irq_disable(); \ |
160 | lockdep_softirq_enter(); \ | 160 | lockdep_softirq_enter(); \ |
161 | WARN_ON(!in_softirq()); | 161 | /* FIXME: preemptible softirqs. WARN_ON(!in_softirq()); */ |
162 | 162 | ||
163 | #define SOFTIRQ_EXIT() \ | 163 | #define SOFTIRQ_EXIT() \ |
164 | lockdep_softirq_exit(); \ | 164 | lockdep_softirq_exit(); \ |
@@ -550,6 +550,11 @@ GENERATE_TESTCASE(init_held_rsem) | |||
550 | #undef E | 550 | #undef E |
551 | 551 | ||
552 | /* | 552 | /* |
553 | * FIXME: turns these into raw-spinlock tests on -rt | ||
554 | */ | ||
555 | #ifndef CONFIG_PREEMPT_RT | ||
556 | |||
557 | /* | ||
553 | * locking an irq-safe lock with irqs enabled: | 558 | * locking an irq-safe lock with irqs enabled: |
554 | */ | 559 | */ |
555 | #define E1() \ | 560 | #define E1() \ |
@@ -890,6 +895,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion_soft) | |||
890 | #include "locking-selftest-softirq.h" | 895 | #include "locking-selftest-softirq.h" |
891 | // GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion2_soft) | 896 | // GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion2_soft) |
892 | 897 | ||
898 | #endif /* !CONFIG_PREEMPT_RT */ | ||
899 | |||
893 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 900 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
894 | # define I_SPINLOCK(x) lockdep_reset_lock(&lock_##x.dep_map) | 901 | # define I_SPINLOCK(x) lockdep_reset_lock(&lock_##x.dep_map) |
895 | # define I_RWLOCK(x) lockdep_reset_lock(&rwlock_##x.dep_map) | 902 | # define I_RWLOCK(x) lockdep_reset_lock(&rwlock_##x.dep_map) |
@@ -998,7 +1005,7 @@ static inline void print_testname(const char *testname) | |||
998 | 1005 | ||
999 | #define DO_TESTCASE_1(desc, name, nr) \ | 1006 | #define DO_TESTCASE_1(desc, name, nr) \ |
1000 | print_testname(desc"/"#nr); \ | 1007 | print_testname(desc"/"#nr); \ |
1001 | dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ | 1008 | dotest(name##_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ |
1002 | printk("\n"); | 1009 | printk("\n"); |
1003 | 1010 | ||
1004 | #define DO_TESTCASE_1B(desc, name, nr) \ | 1011 | #define DO_TESTCASE_1B(desc, name, nr) \ |
@@ -1006,17 +1013,17 @@ static inline void print_testname(const char *testname) | |||
1006 | dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \ | 1013 | dotest(name##_##nr, FAILURE, LOCKTYPE_RWLOCK); \ |
1007 | printk("\n"); | 1014 | printk("\n"); |
1008 | 1015 | ||
1009 | #define DO_TESTCASE_3(desc, name, nr) \ | 1016 | #define DO_TESTCASE_3(desc, name, nr) \ |
1010 | print_testname(desc"/"#nr); \ | 1017 | print_testname(desc"/"#nr); \ |
1011 | dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN); \ | 1018 | dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN); \ |
1012 | dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \ | 1019 | dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \ |
1013 | dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ | 1020 | dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ |
1014 | printk("\n"); | 1021 | printk("\n"); |
1015 | 1022 | ||
1016 | #define DO_TESTCASE_3RW(desc, name, nr) \ | 1023 | #define DO_TESTCASE_3RW(desc, name, nr) \ |
1017 | print_testname(desc"/"#nr); \ | 1024 | print_testname(desc"/"#nr); \ |
1018 | dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN|LOCKTYPE_RWLOCK);\ | 1025 | dotest(name##_spin_##nr, FAILURE, LOCKTYPE_SPIN|LOCKTYPE_RWLOCK);\ |
1019 | dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \ | 1026 | dotest(name##_wlock_##nr, FAILURE, LOCKTYPE_RWLOCK); \ |
1020 | dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ | 1027 | dotest(name##_rlock_##nr, SUCCESS, LOCKTYPE_RWLOCK); \ |
1021 | printk("\n"); | 1028 | printk("\n"); |
1022 | 1029 | ||
@@ -1047,7 +1054,7 @@ static inline void print_testname(const char *testname) | |||
1047 | print_testname(desc); \ | 1054 | print_testname(desc); \ |
1048 | dotest(name##_spin, FAILURE, LOCKTYPE_SPIN); \ | 1055 | dotest(name##_spin, FAILURE, LOCKTYPE_SPIN); \ |
1049 | dotest(name##_wlock, FAILURE, LOCKTYPE_RWLOCK); \ | 1056 | dotest(name##_wlock, FAILURE, LOCKTYPE_RWLOCK); \ |
1050 | dotest(name##_rlock, SUCCESS, LOCKTYPE_RWLOCK); \ | 1057 | dotest(name##_rlock, SUCCESS, LOCKTYPE_RWLOCK); \ |
1051 | dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ | 1058 | dotest(name##_mutex, FAILURE, LOCKTYPE_MUTEX); \ |
1052 | dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ | 1059 | dotest(name##_wsem, FAILURE, LOCKTYPE_RWSEM); \ |
1053 | dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ | 1060 | dotest(name##_rsem, FAILURE, LOCKTYPE_RWSEM); \ |
@@ -1179,6 +1186,7 @@ void locking_selftest(void) | |||
1179 | /* | 1186 | /* |
1180 | * irq-context testcases: | 1187 | * irq-context testcases: |
1181 | */ | 1188 | */ |
1189 | #ifndef CONFIG_PREEMPT_RT | ||
1182 | DO_TESTCASE_2x6("irqs-on + irq-safe-A", irqsafe1); | 1190 | DO_TESTCASE_2x6("irqs-on + irq-safe-A", irqsafe1); |
1183 | DO_TESTCASE_2x3("sirq-safe-A => hirqs-on", irqsafe2A); | 1191 | DO_TESTCASE_2x3("sirq-safe-A => hirqs-on", irqsafe2A); |
1184 | DO_TESTCASE_2x6("safe-A + irqs-on", irqsafe2B); | 1192 | DO_TESTCASE_2x6("safe-A + irqs-on", irqsafe2B); |
@@ -1188,6 +1196,7 @@ void locking_selftest(void) | |||
1188 | 1196 | ||
1189 | DO_TESTCASE_6x2("irq read-recursion", irq_read_recursion); | 1197 | DO_TESTCASE_6x2("irq read-recursion", irq_read_recursion); |
1190 | // DO_TESTCASE_6x2B("irq read-recursion #2", irq_read_recursion2); | 1198 | // DO_TESTCASE_6x2B("irq read-recursion #2", irq_read_recursion2); |
1199 | #endif | ||
1191 | 1200 | ||
1192 | if (unexpected_testcase_failures) { | 1201 | if (unexpected_testcase_failures) { |
1193 | printk("-----------------------------------------------------------------\n"); | 1202 | printk("-----------------------------------------------------------------\n"); |