|
|
@@ -5011,6 +5011,7 @@ sub process {
|
|
|
"memory barrier without comment\n" . $herecurr);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
# check for waitqueue_active without a comment.
|
|
|
if ($line =~ /\bwaitqueue_active\s*\(/) {
|
|
|
if (!ctx_has_comment($first_line, $linenr)) {
|
|
|
@@ -5018,6 +5019,24 @@ sub process {
|
|
|
"waitqueue_active without comment\n" . $herecurr);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+# Check for expedited grace periods that interrupt non-idle non-nohz
|
|
|
+# online CPUs. These expedited can therefore degrade real-time response
|
|
|
+# if used carelessly, and should be avoided where not absolutely
|
|
|
+# needed. It is always OK to use synchronize_rcu_expedited() and
|
|
|
+# synchronize_sched_expedited() at boot time (before real-time applications
|
|
|
+# start) and in error situations where real-time response is compromised in
|
|
|
+# any case. Note that synchronize_srcu_expedited() does -not- interrupt
|
|
|
+# other CPUs, so don't warn on uses of synchronize_srcu_expedited().
|
|
|
+# Of course, nothing comes for free, and srcu_read_lock() and
|
|
|
+# srcu_read_unlock() do contain full memory barriers in payment for
|
|
|
+# synchronize_srcu_expedited() non-interruption properties.
|
|
|
+ if ($line =~ /\b(synchronize_rcu_expedited|synchronize_sched_expedited)\(/) {
|
|
|
+ WARN("EXPEDITED_RCU_GRACE_PERIOD",
|
|
|
+ "expedited RCU grace periods should be avoided where they can degrade real-time response\n" . $herecurr);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
# check of hardware specific defines
|
|
|
if ($line =~ m@^.\s*\#\s*if.*\b(__i386__|__powerpc64__|__sun__|__s390x__)\b@ && $realfile !~ m@include/asm-@) {
|
|
|
CHK("ARCH_DEFINES",
|