diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2012-01-30 11:46:32 -0500 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-02-21 12:06:06 -0500 |
commit | c5fdcec927ee31fc96e92339c3a83ac6e0725289 (patch) | |
tree | 65511a65eb71990d51b46c7a88a35d51f0662e58 /kernel/lockdep.c | |
parent | c0cfbbb0d4fca14b828a7635a59784adfba8989d (diff) |
lockdep: Add CPU-idle/offline warning to lockdep-RCU splat
It is illegal to use RCU from a CPU that has reported idleness or
offlinedness to RCU. However, it can be quite difficult to determine
from a stack trace whether or not a given CPU is idle or offline.
Therefore, this commit adds idle/offline diagnostics to the lockdep-RCU
error message.
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r-- | kernel/lockdep.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 8889f7dd7c46..ea9ee4518c35 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
@@ -4176,7 +4176,13 @@ void lockdep_rcu_suspicious(const char *file, const int line, const char *s) | |||
4176 | printk("-------------------------------\n"); | 4176 | printk("-------------------------------\n"); |
4177 | printk("%s:%d %s!\n", file, line, s); | 4177 | printk("%s:%d %s!\n", file, line, s); |
4178 | printk("\nother info that might help us debug this:\n\n"); | 4178 | printk("\nother info that might help us debug this:\n\n"); |
4179 | printk("\nrcu_scheduler_active = %d, debug_locks = %d\n", rcu_scheduler_active, debug_locks); | 4179 | printk("\n%srcu_scheduler_active = %d, debug_locks = %d\n", |
4180 | !rcu_lockdep_current_cpu_online() | ||
4181 | ? "RCU used illegally from offline CPU!\n" | ||
4182 | : rcu_is_cpu_idle() | ||
4183 | ? "RCU used illegally from idle CPU!\n" | ||
4184 | : "", | ||
4185 | rcu_scheduler_active, debug_locks); | ||
4180 | 4186 | ||
4181 | /* | 4187 | /* |
4182 | * If a CPU is in the RCU-free window in idle (ie: in the section | 4188 | * If a CPU is in the RCU-free window in idle (ie: in the section |