From: ebiederm@xmission.com (Eric W. Biederman)
To: paulmck@linux.vnet.ibm.com
Cc: Rusty Russell <rusty@rustcorp.com.au>,
paulmck@linux.vnet.ibm.com,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Hellwig <hch@lst.de>, Ingo Molnar <mingo@elte.hu>,
Pavel Emelyanov <xemul@openvz.org>,
Vitaliy Gusev <vgusev@openvz.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] kthreads: rework kthread_stop()
Date: Tue, 03 Feb 2009 21:10:06 -0800 [thread overview]
Message-ID: <m1ocxivlch.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <20090203134110.GC6607@linux.vnet.ibm.com> (Paul E. McKenney's message of "Tue\, 3 Feb 2009 05\:41\:10 -0800")
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com> writes:
> ACCESS_ONCE() suffices in many cases, but if the pointer being accessed
> points to a structure that might recently have been initialized, then
> rcu_dereference() will be required on Alpha. Though perhaps the
> discussion below removes the need entirely, but cannot say that I fully
> understand this part of the kernel.
Thanks. I had overlooked the addition of ACCESS_ONCE() into our set of
tricks. I thought Oleg was referring to a hypothetical construct.
Currently Oleg's implementation is fine because of an explicit
memory barrier and two dereferences of the pointer. It just isn't
especially clear.
ACCESS_ONCE would help.
Hmm.
I wonder if it would be better/clearer to define to_kthread as:
static struct kthread *to_kthread(struct task_struct *tsk)
{
void *stack = task_stack_page(tsk);
return (struct kthread *)(stack + kthread_offset);
}
And to measure kthread_offset the first time kthread() was
called. I would love to have a fixed compile time offset but
I don't know how to measure it at compile time reliably.
Oleg what do you think. It would remove the test and be simple and
obviously correct.
Eric
next prev parent reply other threads:[~2009-02-04 5:10 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-30 12:33 [PATCH 3/4] kthreads: rework kthread_stop() Oleg Nesterov
2009-01-30 12:50 ` Oleg Nesterov
2009-01-31 12:16 ` Rusty Russell
2009-02-01 10:21 ` Oleg Nesterov
2009-02-02 17:57 ` Eric W. Biederman
2009-02-02 19:41 ` Oleg Nesterov
2009-02-03 3:25 ` Eric W. Biederman
2009-02-03 13:41 ` Paul E. McKenney
2009-02-04 5:10 ` Eric W. Biederman [this message]
2009-02-04 11:04 ` Rusty Russell
2009-02-04 15:59 ` Eric W. Biederman
2009-02-05 1:03 ` Rusty Russell
2009-02-04 20:46 ` Jon Masters
2009-01-30 21:47 ` Andrew Morton
2009-02-01 10:49 ` 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=m1ocxivlch.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulmck@linux.vnet.ibm.com \
--cc=rusty@rustcorp.com.au \
--cc=vgusev@openvz.org \
--cc=xemul@openvz.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox