From: Oleg Nesterov <oleg@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@elte.hu>, Ben Blum <bblum@google.com>,
Jiri Slaby <jirislaby@gmail.com>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Li Zefan <lizf@cn.fujitsu.com>, Miao Xie <miaox@cn.fujitsu.com>,
Paul Menage <menage@google.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>, Tejun Heo <tj@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/6] move_task_off_dead_cpu: take rq->lock around select_fallback_rq()
Date: Wed, 24 Mar 2010 17:33:56 +0100 [thread overview]
Message-ID: <20100324163356.GA6380@redhat.com> (raw)
In-Reply-To: <1269447422.5109.408.camel@twins>
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
local_irq_save(*flags);
rq = task_rq(p);
raw_spin_lock(&rq->lock);
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);
instead?
Of course, this doesn't really matter, but I'd like to understand
what I have missed here.
Thanks,
Oleg.
next prev parent reply other threads:[~2010-03-24 16:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-15 9:10 [PATCH 2/6] move_task_off_dead_cpu: take rq->lock around select_fallback_rq() Oleg Nesterov
2010-03-24 15:41 ` Peter Zijlstra
2010-03-24 16:07 ` Oleg Nesterov
2010-03-24 16:17 ` Peter Zijlstra
2010-03-24 16:33 ` Oleg Nesterov [this message]
2010-03-26 9:06 ` Peter Zijlstra
2010-04-02 19:12 ` [tip:sched/core] sched: move_task_off_dead_cpu(): Take " tip-bot for Oleg Nesterov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100324163356.GA6380@redhat.com \
--to=oleg@redhat.com \
--cc=bblum@google.com \
--cc=jirislaby@gmail.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=menage@google.com \
--cc=miaox@cn.fujitsu.com \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rjw@sisk.pl \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.