Messages in this thread | | | Date | Wed, 6 Sep 2017 16:49:20 +0800 | From | Boqun Feng <> | Subject | Re: [RFC tip/locking v2 00/13] lockdep: Support deadlock detection for recursive read locks |
| |
On Wed, Sep 06, 2017 at 04:28:11PM +0800, Boqun Feng wrote: > Hi Ingo and Peter, > > This is V2 for recursive read lock support in lockdep. I fix several > bugs in V1 and also add irq inversion detection support for recursive > read locks. > > V1: https://marc.info/?l=linux-kernel&m=150393341825453 > > > As Peter pointed out: > > https://marc.info/?l=linux-kernel&m=150349072023540 > > The lockdep current has a limit support for recursive read locks, the > deadlock case as follow could not be detected: > > read_lock(A); > lock(B); > lock(B); > write_lock(A); > > I got some inspiration from Gautham R Shenoy: > > https://lwn.net/Articles/332801/ > > , and came up with this series. > > The basic idea is: > > * Add recursive read locks into the graph > > * Classify dependencies into --(RR)-->, --(NR)-->, --(RN)-->, > --(NN)-->, where R stands for recursive read lock, N stands for > other locks(i.e. non-recursive read locks and write locks). > > * Define strong dependency paths as the paths of dependencies > don't have two adjacent dependencies as --(*R)--> and --(R*)-->. > > * Extend __bfs() to only traverse on strong dependency paths. > > * If __bfs() finds a strong dependency circle, then a deadlock is > reported. > > The whole series is based on current master branch of Linus' tree: > > e7d0c41ecc2e ("Merge tag 'devprop-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm") > > , and I also put it at: > > git://git.kernel.org/pub/scm/linux/kernel/git/boqun/linux.git arr-rfc-v2
Hmm.. should revert
d82fed752942 ("locking/lockdep/selftests: Fix mixed read-write ABBA tests")
for testing, as it is a work around because of we had limit support for recursive read lock before.
I put a branch with that reverted at:
git://git.kernel.org/pub/scm/linux/kernel/git/boqun/linux.git arr-rfc-v2a
Selftest passed for that branch, now run it for more time.
Regards, Boqun [unhandled content-type:application/pgp-signature] | |