Re: [PATCH v3 07/15] lockdep: Implement crossrelease feature
From: Byungchul Park
Date: Tue Sep 13 2016 - 21:01:21 EST
On Wed, Sep 14, 2016 at 6:42 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> On Tue, Sep 13, 2016 at 09:38:29PM +0200, Peter Zijlstra wrote:
>> > > I _think_ you propose to keep track of all prior held locks and then use
>> > > the union of the held list on the block-chain with the prior held list
>> > > from the complete context.
>> > Almost right. Only thing we need to do to consider the union is to
>> > connect two chains of two contexts by adding one dependency 'b -> a'.
>> Sure, but how do you arrive at which connection to make. The document is
>> entirely silent on this crucial point.
>> The union between the held-locks of the blocked and prev-held-locks of
>> the release should give a fair indication I think, but then, I've not
>> thought too hard on this yet.
> those that are in both sets.
Precisely speaking, I introduces separate chains.
1. Held-locks of the blocked,
A -> B -> C (which original lockdep builds)
2. Prev-held-locks of the release
G -> H -> I (which original lockdep builds, too)
3. Cross chain (which I introduced newly)
C -> G
Then the 'A -> B -> C -> G -> H -> I' can be traversed
when bfs is performed.