lkml.org 
[lkml]   [2008]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [RFC][PATCH 3/7] lockdep: re-annotate scheduler runqueues
    From
    From: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Date: Mon, 04 Aug 2008 15:03:20 +0200

    > Instead of using a per-rq lock class, use the regular nesting operations.
    >
    > However, take extra care with double_lock_balance() as it can release the
    > already held rq->lock (and therefore change its nesting class).
    >
    > So what can happen is:
    >
    > spin_lock(rq->lock); // this rq subclass 0
    >
    > double_lock_balance(rq, other_rq);
    > // release rq
    > // acquire other_rq->lock subclass 0
    > // acquire rq->lock subclass 1
    >
    > spin_unlock(other_rq->lock);
    >
    > leaving you with rq->lock in subclass 1
    >
    > So a subsequent double_lock_balance() call can try to nest a subclass 1
    > lock while already holding a subclass 1 lock.
    >
    > Fix this by introducing double_unlock_balance() which releases the other
    > rq's lock, but also re-sets the subclass for this rq's lock to 0.
    >
    > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>

    Acked-by: David S. Miller <davem@davemloft.net>

    I also tested this on 64-cpu and 128-cpu systems.


    \
     
     \ /
      Last update: 2008-08-05 10:39    [W:0.022 / U:121.488 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site