lkml.org 
[lkml]   [2011]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH RFC tip/core/rcu 11/11] rcu: move TREE_RCU from softirq to kthread
    On Tue, Mar 01, 2011 at 04:07:03PM -0800, Paul E. McKenney wrote:
    > On Tue, Mar 01, 2011 at 03:38:11PM +0100, Peter Zijlstra wrote:
    > > On Mon, 2011-02-28 at 16:13 -0800, Paul E. McKenney wrote:

    [ . . . ]

    > > wait_event() will only actually wait if the condition is false, in the
    > > start-up case above it will find the condition true and fall right
    > > through to do stuff.
    >
    > So as long as it is OK to call sched_setscheduler_nocheck() before
    > the kthread is first awakened, we should be OK.

    So the softlockup code kills me when I do it this way. Or can kill me.
    From what I can se the problem is that it might be the case that no one
    needs a particular RCU kthread for some time. In addition, if the kthread
    has not yet done the wait_event(), wake_up() won't know to wake it up.
    The flag gets set, and all zero of the tasks blocked on the event's
    queue are awakened, but the not-yet-awakened task still sleeps because
    it has not yet done the wait_event().

    So I am falling back to waking each thread up just after creation so
    that they can be safely parked regardless of who needs which kthread at
    what time in the future.

    On the other hand, making these changes and testing them helped me find
    and fix a number of subtle and not-so-subtle bugs in the TREE_RCU priority
    boosting code, so I most certainly cannot argue with the outcome! ;-)

    Thanx, Paul


    \
     
     \ /
      Last update: 2011-03-02 23:43    [W:2.472 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site