From: Will Deacon <will.deacon@arm.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
"Jon Medhurst (Tixy)" <tixy@linaro.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Rabin Vincent <rabin@rab.in>, Ingo Molnar <mingo@redhat.com>,
"H. Peter Anvin" <hpa@linux.intel.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] ARM: ftrace: Ensure code modifications are synchronised across all cpus
Date: Fri, 7 Dec 2012 19:02:44 +0000 [thread overview]
Message-ID: <20121207190244.GB29618@mudshark.cambridge.arm.com> (raw)
In-Reply-To: <1354905805.17101.86.camel@gandalf.local.home>
Hi Steve,
On Fri, Dec 07, 2012 at 06:43:25PM +0000, Steven Rostedt wrote:
> On Fri, 2012-12-07 at 18:13 +0000, Russell King - ARM Linux wrote:
> > Even changing it to a breakpoint is potentially problematical. So we'd
> > need to ensure that no other CPU was executing the code while we modify
> > it.
>
> This is not the same as x86, I guess because x86 has a one byte
> breakpoint. Thus, it is stated in the x86 architecture (I believe,
> Peter, you can correct me if I'm wrong), that the only "safe" thing that
> can modify code, is a software breakpoint.
>
> Are you saying that thumb does not guarantee even software breakpoints
> from being added atomically? Doesn't that kill the purpose of a
> breakpoint?
For ARMv7, there are small subsets of instructions for ARM and Thumb which
are guaranteed to be atomic wrt concurrent modification and execution of
the instruction stream between different processors:
Thumb: The 16-bit encodings of the B, NOP, BKPT, and SVC instructions.
ARM: The B, BL, NOP, BKPT, SVC, HVC, and SMC instructions.
but before your eyes light up at the presence of the BKPT instruction in
that list; we don't actually use that in Linux and instead leave it for
external (i.e. JTAG) debuggers so that they can operate without getting
tangled up with spurious traps from the OS. Linux actually picks its own
undefined instructions, which are obviously not included in the lists above.
Also note that the 16-bit limitation for Thumb instructions above can
actually be used to modify *half* of a BL instruction but, to keep things
exciting, the PC-relative immediate is split across the two halves. However,
you could in theory mess around with bottom 10 bits or so, depending on the
exact encoding...
Obviously this doesn't preclude the need for cache maintenance on both D and
I side, but the atomicity guarantees are as I've described above.
Will
next prev parent reply other threads:[~2012-12-07 19:03 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-06 18:11 Jon Medhurst (Tixy)
2012-12-06 19:19 ` Steven Rostedt
2012-12-07 9:22 ` Jon Medhurst (Tixy)
2012-12-07 14:03 ` Steven Rostedt
2012-12-07 14:55 ` Jon Medhurst (Tixy)
2012-12-07 15:28 ` Steven Rostedt
2012-12-07 15:40 ` Jon Medhurst (Tixy)
2012-12-07 16:09 ` Steven Rostedt
2012-12-07 16:23 ` Russell King - ARM Linux
2012-12-07 16:36 ` Steven Rostedt
2012-12-07 16:45 ` Russell King - ARM Linux
2012-12-07 17:13 ` Steven Rostedt
2012-12-07 17:45 ` Jon Medhurst (Tixy)
2012-12-07 18:06 ` Steven Rostedt
2012-12-07 18:17 ` Steven Rostedt
2012-12-07 18:18 ` Jon Medhurst (Tixy)
2012-12-10 10:04 ` Will Deacon
2012-12-10 13:02 ` Steven Rostedt
2012-12-10 13:33 ` Will Deacon
2012-12-10 13:40 ` Jamie Lokier
2012-12-10 14:56 ` Will Deacon
2012-12-10 13:57 ` Russell King - ARM Linux
2012-12-10 14:06 ` Steven Rostedt
2012-12-10 14:07 ` Russell King - ARM Linux
2012-12-10 14:46 ` Steven Rostedt
2012-12-10 15:25 ` Russell King - ARM Linux
2012-12-10 16:31 ` Steven Rostedt
2012-12-10 16:45 ` Jon Medhurst (Tixy)
2012-12-07 18:13 ` Russell King - ARM Linux
2012-12-07 18:43 ` Steven Rostedt
2012-12-07 19:02 ` Will Deacon [this message]
2012-12-07 20:01 ` Steven Rostedt
2012-12-10 11:04 ` Jon Medhurst (Tixy)
2012-12-10 11:24 ` Will Deacon
2012-12-10 14:02 ` Steven Rostedt
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=20121207190244.GB29618@mudshark.cambridge.arm.com \
--to=will.deacon@arm.com \
--cc=fweisbec@gmail.com \
--cc=hpa@linux.intel.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mingo@redhat.com \
--cc=rabin@rab.in \
--cc=rostedt@goodmis.org \
--cc=tixy@linaro.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
all inboxes | Powered by JetHome®