lkml.org 
[lkml]   [2017]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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]
\
 
 \ /
  Last update: 2017-09-06 10:49    [W:0.063 / U:1.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site