hc
2023-11-07 f45e756958099c35d6afb746df1d40a1c6302cfc
kernel/lib/locking-selftest.c
....@@ -742,6 +742,8 @@
742742 #include "locking-selftest-spin-hardirq.h"
743743 GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_spin)
744744
745
+#ifndef CONFIG_PREEMPT_RT_FULL
746
+
745747 #include "locking-selftest-rlock-hardirq.h"
746748 GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_rlock)
747749
....@@ -757,9 +759,12 @@
757759 #include "locking-selftest-wlock-softirq.h"
758760 GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_soft_wlock)
759761
762
+#endif
763
+
760764 #undef E1
761765 #undef E2
762766
767
+#ifndef CONFIG_PREEMPT_RT_FULL
763768 /*
764769 * Enabling hardirqs with a softirq-safe lock held:
765770 */
....@@ -792,6 +797,8 @@
792797 #undef E1
793798 #undef E2
794799
800
+#endif
801
+
795802 /*
796803 * Enabling irqs with an irq-safe lock held:
797804 */
....@@ -815,6 +822,8 @@
815822 #include "locking-selftest-spin-hardirq.h"
816823 GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_spin)
817824
825
+#ifndef CONFIG_PREEMPT_RT_FULL
826
+
818827 #include "locking-selftest-rlock-hardirq.h"
819828 GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_rlock)
820829
....@@ -829,6 +838,8 @@
829838
830839 #include "locking-selftest-wlock-softirq.h"
831840 GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_soft_wlock)
841
+
842
+#endif
832843
833844 #undef E1
834845 #undef E2
....@@ -861,6 +872,8 @@
861872 #include "locking-selftest-spin-hardirq.h"
862873 GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_spin)
863874
875
+#ifndef CONFIG_PREEMPT_RT_FULL
876
+
864877 #include "locking-selftest-rlock-hardirq.h"
865878 GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_rlock)
866879
....@@ -875,6 +888,8 @@
875888
876889 #include "locking-selftest-wlock-softirq.h"
877890 GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_soft_wlock)
891
+
892
+#endif
878893
879894 #undef E1
880895 #undef E2
....@@ -909,6 +924,8 @@
909924 #include "locking-selftest-spin-hardirq.h"
910925 GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_spin)
911926
927
+#ifndef CONFIG_PREEMPT_RT_FULL
928
+
912929 #include "locking-selftest-rlock-hardirq.h"
913930 GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_rlock)
914931
....@@ -924,9 +941,13 @@
924941 #include "locking-selftest-wlock-softirq.h"
925942 GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_soft_wlock)
926943
944
+#endif
945
+
927946 #undef E1
928947 #undef E2
929948 #undef E3
949
+
950
+#ifndef CONFIG_PREEMPT_RT_FULL
930951
931952 /*
932953 * read-lock / write-lock irq inversion.
....@@ -990,6 +1011,10 @@
9901011 #undef E2
9911012 #undef E3
9921013
1014
+#endif
1015
+
1016
+#ifndef CONFIG_PREEMPT_RT_FULL
1017
+
9931018 /*
9941019 * read-lock / write-lock recursion that is actually safe.
9951020 */
....@@ -1027,6 +1052,8 @@
10271052 #undef E1
10281053 #undef E2
10291054 #undef E3
1055
+
1056
+#endif
10301057
10311058 /*
10321059 * read-lock / write-lock recursion that is unsafe.
....@@ -2057,6 +2084,7 @@
20572084
20582085 printk(" --------------------------------------------------------------------------\n");
20592086
2087
+#ifndef CONFIG_PREEMPT_RT_FULL
20602088 /*
20612089 * irq-context testcases:
20622090 */
....@@ -2069,6 +2097,28 @@
20692097
20702098 DO_TESTCASE_6x2("irq read-recursion", irq_read_recursion);
20712099 // DO_TESTCASE_6x2B("irq read-recursion #2", irq_read_recursion2);
2100
+#else
2101
+ /* On -rt, we only do hardirq context test for raw spinlock */
2102
+ DO_TESTCASE_1B("hard-irqs-on + irq-safe-A", irqsafe1_hard_spin, 12);
2103
+ DO_TESTCASE_1B("hard-irqs-on + irq-safe-A", irqsafe1_hard_spin, 21);
2104
+
2105
+ DO_TESTCASE_1B("hard-safe-A + irqs-on", irqsafe2B_hard_spin, 12);
2106
+ DO_TESTCASE_1B("hard-safe-A + irqs-on", irqsafe2B_hard_spin, 21);
2107
+
2108
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 123);
2109
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 132);
2110
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 213);
2111
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 231);
2112
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 312);
2113
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #1", irqsafe3_hard_spin, 321);
2114
+
2115
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 123);
2116
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 132);
2117
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 213);
2118
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 231);
2119
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 312);
2120
+ DO_TESTCASE_1B("hard-safe-A + unsafe-B #2", irqsafe4_hard_spin, 321);
2121
+#endif
20722122
20732123 ww_tests();
20742124