From: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
Ingo Molnar <mingo@elte.hu>,
Masami Hiramatsu <mhiramat@redhat.com>,
Mel Gorman <mel@csn.ul.ie>, Randy Dunlap <rdunlap@xenotime.net>,
Linus Torvalds <torvalds@linux-foundation.org>,
Roland McGrath <roland@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>, Oleg Nesterov <oleg@redhat.com>,
Mark Wielaard <mjw@redhat.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
LKML <linux-kernel@vger.kernel.org>,
Jim Keniston <jkenisto@linux.vnet.ibm.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
"Frank Ch. Eigler" <fche@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Hugh Dickins <hugh.dickins@tiscali.co.uk>,
Rik van Riel <riel@redhat.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH v3 0/10] Uprobes v3
Date: Wed, 12 May 2010 18:57:08 +0530 [thread overview]
Message-ID: <20100512132708.GC13606@in.ibm.com> (raw)
In-Reply-To: <1273666385.1626.96.camel@laptop>
On Wed, May 12, 2010 at 02:13:05PM +0200, Peter Zijlstra wrote:
> On Wed, 2010-05-12 at 15:55 +0530, Srikar Dronamraju wrote:
> > * Peter Zijlstra <peterz@infradead.org> [2010-05-11 22:59:45]:
> >
> > > On Thu, 2010-05-06 at 23:31 +0530, Srikar Dronamraju wrote:
> > > > - Addressed comments from Oleg, including removal of interrupt context
> > > > handlers, reverting background page replacement in favour of
> > > > access_process_vm().
> > >
> > >
> > > > +static int write_opcode(struct task_struct *tsk, unsigned long vaddr,
> > > > + user_bkpt_opcode_t opcode)
> > > > +{
> > > > + int ret;
> > > > +
> > > > + if (!tsk)
> > > > + return -EINVAL;
> > > > +
> > > > + ret = access_process_vm(tsk, vaddr, &opcode, user_bkpt_opcode_sz, 1);
> > > > + return (ret == user_bkpt_opcode_sz ? 0 : -EFAULT);
> > > > +}
> > >
> > > Why!
> > >
> > > That's not not the atomic sequence outlined.
> > >
> >
> >
> > Yes, we had moved away from access_process_vm to background page
> > replacement in Version 1 and Version 2.
> >
> > One of the reasons being Mathieu suggesting to Jim in LFCS that
> > for almost all architectures insertion of a breakpoint instruction on a
> > user page is an atomic operation, as far as the CPU is concerned.
>
> That is true, however when restoring the old instruction you do need to
> take care, so your usage from set_orig_insn() is dubious.
>
> > Can you and other VM experts tell me if access_process_vm isnt going to
> > be atomic with respect to inserting/deleting a breakpoint instruction?
>
> Well, clearly not, since it simply does a gup(.force=1), if whatever
> page is there is writable it will simply poke at it.
>
> Now writing the INT3 is special, but restoring the old insn is not and
> might confuse another CPU that is currently trying to execute code near
> there.
Yes, this helps for breakpoint insertion, but...
The question is whether only INT3 special or single-byte changes are
also guaranteed to be atomic. In http://lkml.org/lkml/2010/1/27/275
Peter Anvin states 'specific case of a more generic rule'.
For restoring the old instruction, we technically need to put back just
one byte, irrespective of the actual length of the underlying
instruction. Now, as long as we have the housekeeping code to handle the
possibility of a thread hitting the said breakpoint when its being
removed, is it safe to assume atomicity for replacing one byte of
possibly a longer instruction?
Ananth
next prev parent reply other threads:[~2010-05-12 13:27 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-06 18:01 [PATCH v3 0/10] Uprobes v3 Srikar Dronamraju
2010-05-06 18:01 ` [PATCH v3 1/10] X86 instruction analysis: Move Macro W to insn.h Srikar Dronamraju
2010-05-06 18:02 ` [PATCH v3 2/10] User Space Breakpoint Assistance Layer Srikar Dronamraju
2010-05-06 18:02 ` [PATCH v3 3/10] x86 support for User space breakpoint assistance Srikar Dronamraju
2010-05-06 18:02 ` [PATCH v3 4/10] Slot allocation for execution out of line (XOL) Srikar Dronamraju
2010-05-06 18:02 ` [PATCH v3 5/10] Uprobes Implementation Srikar Dronamraju
2010-05-06 18:02 ` [PATCH v3 6/10] x86 support for Uprobes Srikar Dronamraju
2010-05-06 18:03 ` [PATCH v3 7/10] samples: Uprobes samples Srikar Dronamraju
2010-05-06 18:03 ` [PATCH v3 8/10] Uprobes documentation Srikar Dronamraju
2010-05-06 18:03 ` [PATCH v3 9/10] trace: uprobes trace_event interface Srikar Dronamraju
2010-05-06 18:03 ` [PATCH v3 10/10] perf: perf interface for uprobes Srikar Dronamraju
2010-05-06 23:13 ` Masami Hiramatsu
2010-05-07 2:24 ` Srikar Dronamraju
2010-05-07 17:53 ` Masami Hiramatsu
2010-05-09 11:18 ` Srikar Dronamraju
2010-05-11 20:59 ` [PATCH v3 0/10] Uprobes v3 Peter Zijlstra
2010-05-12 10:25 ` Srikar Dronamraju
2010-05-12 12:13 ` Peter Zijlstra
2010-05-12 13:27 ` Ananth N Mavinakayanahalli [this message]
2010-05-12 13:39 ` Peter Zijlstra
2010-05-12 14:04 ` Ananth N Mavinakayanahalli
2010-05-12 14:46 ` Mathieu Desnoyers
2010-05-12 16:55 ` H. Peter Anvin
2010-05-12 17:59 ` Mathieu Desnoyers
2010-05-13 12:07 ` Srikar Dronamraju
2010-05-12 10:38 ` Frederic Weisbecker
2010-05-12 13:39 ` Srikar Dronamraju
2010-05-12 14:53 ` Frederic Weisbecker
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=20100512132708.GC13606@in.ibm.com \
--to=ananth@in.ibm.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=fche@redhat.com \
--cc=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=hugh.dickins@tiscali.co.uk \
--cc=jkenisto@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mel@csn.ul.ie \
--cc=mhiramat@redhat.com \
--cc=mingo@elte.hu \
--cc=mjw@redhat.com \
--cc=oleg@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rdunlap@xenotime.net \
--cc=riel@redhat.com \
--cc=roland@redhat.com \
--cc=srikar@linux.vnet.ibm.com \
--cc=torvalds@linux-foundation.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;
as well as URLs for NNTP newsgroup(s).