summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLai Jiangshan <laijs@cn.fujitsu.com>2010-04-20 10:23:07 +0200
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2010-05-10 20:08:31 +0200
commit2b3fc35f6919344e3cf722dde8308f47235c0b70 (patch)
tree2bc2cfc9c1a032d51a3d99a10e309e100b9eea4a /lib
parentLinux 2.6.34-rc7 (diff)
downloadlinux-2b3fc35f6919344e3cf722dde8308f47235c0b70.tar.xz
linux-2b3fc35f6919344e3cf722dde8308f47235c0b70.zip
rcu: optionally leave lockdep enabled after RCU lockdep splat
There is no need to disable lockdep after an RCU lockdep splat, so remove the debug_lockdeps_off() from lockdep_rcu_dereference(). To avoid repeated lockdep splats, use a static variable in the inlined rcu_dereference_check() and rcu_dereference_protected() macros so that a given instance splats only once, but so that multiple instances can be detected per boot. This is controlled by a new config variable CONFIG_PROVE_RCU_REPEATEDLY, which is disabled by default. This provides the normal lockdep behavior by default, but permits people who want to find multiple RCU-lockdep splats per boot to easily do so. Requested-by: Eric Paris <eparis@redhat.com> Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Tested-by: Eric Paris <eparis@redhat.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Kconfig.debug12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 935248bdbc47..94090b4bb7d2 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -512,6 +512,18 @@ config PROVE_RCU
Say N if you are unsure.
+config PROVE_RCU_REPEATEDLY
+ bool "RCU debugging: don't disable PROVE_RCU on first splat"
+ depends on PROVE_RCU
+ default n
+ help
+ By itself, PROVE_RCU will disable checking upon issuing the
+ first warning (or "splat"). This feature prevents such
+ disabling, allowing multiple RCU-lockdep warnings to be printed
+ on a single reboot.
+
+ Say N if you are unsure.
+
config LOCKDEP
bool
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT