rcu: optionally leave lockdep enabled after RCU lockdep splat
authorLai Jiangshan <laijs@cn.fujitsu.com>
Tue, 20 Apr 2010 08:23:07 +0000 (16:23 +0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 10 May 2010 18:08:31 +0000 (11:08 -0700)
commit2b3fc35f6919344e3cf722dde8308f47235c0b70
tree2bc2cfc9c1a032d51a3d99a10e309e100b9eea4a
parentb57f95a38233a2e73b679bea4a5453a1cc2a1cc9
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>
include/linux/rcupdate.h
kernel/lockdep.c
lib/Kconfig.debug