2626#include <linux/rtmutex.h>
2727#include <linux/local_lock.h>
2828
29+ #ifdef CONFIG_PREEMPT_RT
30+ # define NON_RT (...)
31+ #else
32+ # define NON_RT (...) __VA_ARGS__
33+ #endif
34+
2935/*
3036 * Change this to 1 if you want to see the failure printouts:
3137 */
@@ -808,6 +814,7 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_rlock)
808814#include "locking-selftest-wlock-hardirq.h"
809815GENERATE_PERMUTATIONS_2_EVENTS (irqsafe1_hard_wlock )
810816
817+ #ifndef CONFIG_PREEMPT_RT
811818#include "locking-selftest-spin-softirq.h"
812819GENERATE_PERMUTATIONS_2_EVENTS (irqsafe1_soft_spin )
813820
@@ -816,10 +823,12 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_soft_rlock)
816823
817824#include "locking-selftest-wlock-softirq.h"
818825GENERATE_PERMUTATIONS_2_EVENTS (irqsafe1_soft_wlock )
826+ #endif
819827
820828#undef E1
821829#undef E2
822830
831+ #ifndef CONFIG_PREEMPT_RT
823832/*
824833 * Enabling hardirqs with a softirq-safe lock held:
825834 */
@@ -852,6 +861,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2A_rlock)
852861#undef E1
853862#undef E2
854863
864+ #endif
865+
855866/*
856867 * Enabling irqs with an irq-safe lock held:
857868 */
@@ -881,6 +892,7 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_rlock)
881892#include "locking-selftest-wlock-hardirq.h"
882893GENERATE_PERMUTATIONS_2_EVENTS (irqsafe2B_hard_wlock )
883894
895+ #ifndef CONFIG_PREEMPT_RT
884896#include "locking-selftest-spin-softirq.h"
885897GENERATE_PERMUTATIONS_2_EVENTS (irqsafe2B_soft_spin )
886898
@@ -889,6 +901,7 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_soft_rlock)
889901
890902#include "locking-selftest-wlock-softirq.h"
891903GENERATE_PERMUTATIONS_2_EVENTS (irqsafe2B_soft_wlock )
904+ #endif
892905
893906#undef E1
894907#undef E2
@@ -927,6 +940,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_rlock)
927940#include "locking-selftest-wlock-hardirq.h"
928941GENERATE_PERMUTATIONS_3_EVENTS (irqsafe3_hard_wlock )
929942
943+ #ifndef CONFIG_PREEMPT_RT
930944#include "locking-selftest-spin-softirq.h"
931945GENERATE_PERMUTATIONS_3_EVENTS (irqsafe3_soft_spin )
932946
@@ -935,6 +949,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_soft_rlock)
935949
936950#include "locking-selftest-wlock-softirq.h"
937951GENERATE_PERMUTATIONS_3_EVENTS (irqsafe3_soft_wlock )
952+ #endif
938953
939954#undef E1
940955#undef E2
@@ -975,6 +990,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_rlock)
975990#include "locking-selftest-wlock-hardirq.h"
976991GENERATE_PERMUTATIONS_3_EVENTS (irqsafe4_hard_wlock )
977992
993+ #ifndef CONFIG_PREEMPT_RT
978994#include "locking-selftest-spin-softirq.h"
979995GENERATE_PERMUTATIONS_3_EVENTS (irqsafe4_soft_spin )
980996
@@ -983,6 +999,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_soft_rlock)
983999
9841000#include "locking-selftest-wlock-softirq.h"
9851001GENERATE_PERMUTATIONS_3_EVENTS (irqsafe4_soft_wlock )
1002+ #endif
9861003
9871004#undef E1
9881005#undef E2
@@ -1037,6 +1054,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_inversion_hard_rlock)
10371054#include "locking-selftest-wlock-hardirq.h"
10381055GENERATE_PERMUTATIONS_3_EVENTS (irq_inversion_hard_wlock )
10391056
1057+ #ifndef CONFIG_PREEMPT_RT
10401058#include "locking-selftest-spin-softirq.h"
10411059GENERATE_PERMUTATIONS_3_EVENTS (irq_inversion_soft_spin )
10421060
@@ -1045,6 +1063,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_inversion_soft_rlock)
10451063
10461064#include "locking-selftest-wlock-softirq.h"
10471065GENERATE_PERMUTATIONS_3_EVENTS (irq_inversion_soft_wlock )
1066+ #endif
10481067
10491068#undef E1
10501069#undef E2
@@ -1212,12 +1231,14 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion_hard_rlock)
12121231#include "locking-selftest-wlock.h"
12131232GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion_hard_wlock )
12141233
1234+ #ifndef CONFIG_PREEMPT_RT
12151235#include "locking-selftest-softirq.h"
12161236#include "locking-selftest-rlock.h"
12171237GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion_soft_rlock )
12181238
12191239#include "locking-selftest-wlock.h"
12201240GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion_soft_wlock )
1241+ #endif
12211242
12221243#undef E1
12231244#undef E2
@@ -1258,12 +1279,14 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion2_hard_rlock)
12581279#include "locking-selftest-wlock.h"
12591280GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion2_hard_wlock )
12601281
1282+ #ifndef CONFIG_PREEMPT_RT
12611283#include "locking-selftest-softirq.h"
12621284#include "locking-selftest-rlock.h"
12631285GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion2_soft_rlock )
12641286
12651287#include "locking-selftest-wlock.h"
12661288GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion2_soft_wlock )
1289+ #endif
12671290
12681291#undef E1
12691292#undef E2
@@ -1312,12 +1335,14 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion3_hard_rlock)
13121335#include "locking-selftest-wlock.h"
13131336GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion3_hard_wlock )
13141337
1338+ #ifndef CONFIG_PREEMPT_RT
13151339#include "locking-selftest-softirq.h"
13161340#include "locking-selftest-rlock.h"
13171341GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion3_soft_rlock )
13181342
13191343#include "locking-selftest-wlock.h"
13201344GENERATE_PERMUTATIONS_3_EVENTS (irq_read_recursion3_soft_wlock )
1345+ #endif
13211346
13221347#ifdef CONFIG_DEBUG_LOCK_ALLOC
13231348# define I_SPINLOCK (x ) lockdep_reset_lock(&lock_##x.dep_map)
@@ -1523,7 +1548,7 @@ static inline void print_testname(const char *testname)
15231548
15241549#define DO_TESTCASE_2x2RW (desc , name , nr ) \
15251550 DO_TESTCASE_2RW("hard-"desc, name##_hard, nr) \
1526- DO_TESTCASE_2RW("soft-"desc, name##_soft, nr) \
1551+ NON_RT( DO_TESTCASE_2RW("soft-"desc, name##_soft, nr)) \
15271552
15281553#define DO_TESTCASE_6x2x2RW (desc , name ) \
15291554 DO_TESTCASE_2x2RW(desc, name, 123); \
@@ -1571,19 +1596,19 @@ static inline void print_testname(const char *testname)
15711596
15721597#define DO_TESTCASE_2I (desc , name , nr ) \
15731598 DO_TESTCASE_1("hard-"desc, name##_hard, nr); \
1574- DO_TESTCASE_1("soft-"desc, name##_soft, nr);
1599+ NON_RT( DO_TESTCASE_1("soft-"desc, name##_soft, nr) );
15751600
15761601#define DO_TESTCASE_2IB (desc , name , nr ) \
15771602 DO_TESTCASE_1B("hard-"desc, name##_hard, nr); \
1578- DO_TESTCASE_1B("soft-"desc, name##_soft, nr);
1603+ NON_RT( DO_TESTCASE_1B("soft-"desc, name##_soft, nr) );
15791604
15801605#define DO_TESTCASE_6I (desc , name , nr ) \
15811606 DO_TESTCASE_3("hard-"desc, name##_hard, nr); \
1582- DO_TESTCASE_3("soft-"desc, name##_soft, nr);
1607+ NON_RT( DO_TESTCASE_3("soft-"desc, name##_soft, nr) );
15831608
15841609#define DO_TESTCASE_6IRW (desc , name , nr ) \
15851610 DO_TESTCASE_3RW("hard-"desc, name##_hard, nr); \
1586- DO_TESTCASE_3RW("soft-"desc, name##_soft, nr);
1611+ NON_RT( DO_TESTCASE_3RW("soft-"desc, name##_soft, nr) );
15871612
15881613#define DO_TESTCASE_2x3 (desc , name ) \
15891614 DO_TESTCASE_3(desc, name, 12); \
@@ -2909,12 +2934,11 @@ void locking_selftest(void)
29092934 DO_TESTCASE_6x1RR ("rlock W1R2/R2R3/W3W1" , W1R2_R2R3_W3W1 );
29102935
29112936 printk (" --------------------------------------------------------------------------\n" );
2912-
29132937 /*
29142938 * irq-context testcases:
29152939 */
29162940 DO_TESTCASE_2x6 ("irqs-on + irq-safe-A" , irqsafe1 );
2917- DO_TESTCASE_2x3 ("sirq-safe-A => hirqs-on" , irqsafe2A );
2941+ NON_RT ( DO_TESTCASE_2x3 ("sirq-safe-A => hirqs-on" , irqsafe2A ) );
29182942 DO_TESTCASE_2x6 ("safe-A + irqs-on" , irqsafe2B );
29192943 DO_TESTCASE_6x6 ("safe-A + unsafe-B #1" , irqsafe3 );
29202944 DO_TESTCASE_6x6 ("safe-A + unsafe-B #2" , irqsafe4 );
0 commit comments