[lkml]   [2010]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH 2/6] move_task_off_dead_cpu: take rq->lock around select_fallback_rq()
    On 03/24, Peter Zijlstra wrote:
    > Yeah, you made a few good points in 0/6, am now staring at the code on
    > how to close those holes, hope to post something sensible soon.

    Yes, great.

    Speaking of 0/6, I forgot to ask a couple more question...

    try_to_wake_up() does task_rq_lock() which checks TASK_WAKING. Perhaps
    it shouldn't ? I mean, perhaps try_to_wake_up() can take rq->lock without
    checking task->state. It can never race with the owner of TASK_WAKING,
    before anything else we check "p->state & state".

    And. Without the change above, any owner of TASK_WAKING must disable
    preemption and clear irqs.

    What do you think?

    And a stupid question. While doing these changes I was really, really
    puzzled by task_rq_lock() which does

    rq = task_rq(p);

    to the point, I even tried to read the comment which says:

    Note the ordering: we can safely lookup the task_rq without
    explicitly disabling preemption.

    Could you please explain what does this mean? IOW, why can't we do

    rq = task_rq(p);
    raw_spin_lock_irqsave(&rq->lock, flags);


    Of course, this doesn't really matter, but I'd like to understand
    what I have missed here.



     \ /
      Last update: 2010-03-24 17:39    [W:0.019 / U:22.108 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site