From: Peter Zijlstra <peterz@infradead.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Andy Lutomirski <luto@amacapital.net>,
Linux List Kernel Mailing <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Andy Lutomirski <luto@kernel.org>,
Nicolai Stange <nstange@suse.de>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H. Peter Anvin" <hpa@zytor.com>,
the arch/x86 maintainers <x86@kernel.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Jiri Kosina <jikos@kernel.org>, Miroslav Benes <mbenes@suse.cz>,
Petr Mladek <pmladek@suse.com>,
Joe Lawrence <joe.lawrence@redhat.com>,
Shuah Khan <shuah@kernel.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Tim Chen <tim.c.chen@linux.intel.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
Mimi Zohar <zohar@linux.ibm.com>, Juergen Gross <jgross@suse.com>,
Nick Desaulniers <ndesaulniers@google.com>,
Nayna Jain <nayna@linux.ibm.com>,
Masahiro Yamada <yamada.masahiro@socionext.com>,
Joerg Roedel <jroedel@suse.de>,
"open list:KERNEL SELFTEST FRAMEWORK"
<linux-kselftest@vger.kernel.org>,
stable <stable@vger.kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>
Subject: Re: [RFC][PATCH 1/2] x86: Allow breakpoints to emulate call functions
Date: Tue, 7 May 2019 11:51:03 +0200 [thread overview]
Message-ID: <20190507095103.GP2606@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <CAHk-=wjLXmOn=Cp=uOfO4gE01eN_-UcOUyrMTTw5-f_OfPO48Q@mail.gmail.com>
On Mon, May 06, 2019 at 07:22:06PM -0700, Linus Torvalds wrote:
> We do *not* have very strict guarantees for D$-vs-I$ coherency on x86,
> but we *do* have very strict guarantees for D$-vs-D$ coherency. And so
> we could use the D$ coherency to give us atomicity guarantees for
> loading and storing the instruction offset for instruction emulation,
> in ways we can *not* use the D$-to-I$ guarantees and just executing it
> directly.
>
> So while we still need those nasty IPI's to guarantee the D$-vs-I$
> coherency in the "big picture" model and to get the serialization with
> the actual 'int3' exception right, we *could* just do all the other
> parts of the instruction emulation using the D$ coherency.
>
> So we could do the actual "call offset" write with a single atomic
> 4-byte locked cycle (just use "xchg" to write - it's always locked).
> And similarly we could do the call offset *read* with a single locked
> cycle (cmpxchg with a 0 value, for example). It would be atomic even
> if it crosses a cacheline boundary.
Very 'soon', x86 will start to #AC if you do unaligned LOCK prefixed
instructions. The problem is that while aligned LOCK instructions can do
the atomicity with the coherency protocol, unaligned (esp, line or page
boundary crossing ones) needs that bus-lock thing the SDM talks about.
For giggles, write yourself a while(1) loop that XCHGs across a
page-boundary and see what it does to the rest of the system.
So _please_, do not rely on unaligned atomic ops. We really want them to
do the way of the Dodo.
next prev parent reply other threads:[~2019-05-07 9:51 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-01 20:28 [RFC][PATCH 0/2] ftrace/x86: Allow for breakpoint handlers to emulate call functions Steven Rostedt
2019-05-01 20:28 ` [RFC][PATCH 1/2] x86: Allow breakpoints " Steven Rostedt
2019-05-02 3:24 ` Steven Rostedt
2019-05-02 16:21 ` Peter Zijlstra
2019-05-02 16:29 ` Peter Zijlstra
2019-05-02 18:02 ` Linus Torvalds
2019-05-02 18:18 ` Peter Zijlstra
2019-05-02 18:30 ` Peter Zijlstra
2019-05-02 18:43 ` Linus Torvalds
2019-05-02 19:28 ` Jiri Kosina
2019-05-02 20:25 ` Andy Lutomirski
2019-05-02 20:21 ` Peter Zijlstra
2019-05-02 20:49 ` Linus Torvalds
2019-05-02 21:32 ` Peter Zijlstra
2019-05-03 19:24 ` Steven Rostedt
2019-05-03 21:46 ` Linus Torvalds
2019-05-03 22:49 ` Steven Rostedt
2019-05-03 23:07 ` Linus Torvalds
2019-05-04 4:17 ` Steven Rostedt
[not found] ` <CAHk-=wiuSFbv_rELND-BLWcP0GSZ0yF=xOAEcf61GE3bU9d=yg@mail.gmail.com>
2019-05-04 18:59 ` Linus Torvalds
2019-05-04 20:12 ` Andy Lutomirski
2019-05-04 20:28 ` Linus Torvalds
2019-05-04 20:36 ` Linus Torvalds
2019-05-03 22:55 ` Andy Lutomirski
2019-05-03 23:16 ` Linus Torvalds
2019-05-03 23:32 ` Andy Lutomirski
2019-05-02 22:52 ` Steven Rostedt
2019-05-02 23:31 ` Steven Rostedt
2019-05-02 23:50 ` Steven Rostedt
2019-05-03 1:51 ` [RFC][PATCH 1/2 v2] " Steven Rostedt
2019-05-03 9:29 ` [RFC][PATCH 1/2] " Peter Zijlstra
2019-05-03 13:22 ` Steven Rostedt
2019-05-03 16:20 ` Andy Lutomirski
2019-05-03 16:31 ` Steven Rostedt
2019-05-03 16:35 ` Peter Zijlstra
2019-05-03 16:44 ` Andy Lutomirski
2019-05-03 16:49 ` Steven Rostedt
2019-05-03 16:32 ` Peter Zijlstra
2019-05-03 18:57 ` Linus Torvalds
2019-05-06 8:19 ` Peter Zijlstra
2019-05-06 13:56 ` Steven Rostedt
2019-05-06 16:17 ` Linus Torvalds
2019-05-06 16:19 ` Linus Torvalds
2019-05-06 17:06 ` Steven Rostedt
2019-05-06 18:06 ` Linus Torvalds
2019-05-06 18:57 ` Steven Rostedt
2019-05-06 19:46 ` Linus Torvalds
2019-05-06 20:29 ` Steven Rostedt
2019-05-06 20:42 ` Linus Torvalds
2019-05-06 20:44 ` Linus Torvalds
2019-05-06 21:45 ` Steven Rostedt
2019-05-06 22:06 ` Linus Torvalds
2019-05-06 22:31 ` Linus Torvalds
2019-05-07 0:10 ` Steven Rostedt
2019-05-07 1:06 ` Linus Torvalds
2019-05-07 1:04 ` Steven Rostedt
2019-05-07 1:34 ` Steven Rostedt
2019-05-07 1:34 ` Linus Torvalds
2019-05-07 1:53 ` Steven Rostedt
2019-05-07 2:22 ` Linus Torvalds
2019-05-07 2:58 ` Steven Rostedt
2019-05-07 3:05 ` Linus Torvalds
2019-05-07 3:21 ` Steven Rostedt
2019-05-07 3:28 ` Linus Torvalds
2019-05-07 14:54 ` Linus Torvalds
2019-05-07 15:12 ` Steven Rostedt
2019-05-07 15:25 ` Steven Rostedt
2019-05-07 16:25 ` Steven Rostedt
2019-05-07 15:31 ` Linus Torvalds
2019-05-07 15:45 ` Steven Rostedt
2019-05-07 16:34 ` Peter Zijlstra
2019-05-07 17:08 ` Linus Torvalds
2019-05-07 17:21 ` Josh Poimboeuf
2019-05-07 21:24 ` Steven Rostedt
2019-05-08 4:50 ` Linus Torvalds
2019-05-08 16:37 ` Steven Rostedt
2019-05-07 17:38 ` Peter Zijlstra
2019-05-07 9:51 ` Peter Zijlstra [this message]
2019-05-07 14:48 ` Andy Lutomirski
2019-05-07 14:57 ` Linus Torvalds
2019-05-07 14:13 ` Masami Hiramatsu
2019-05-07 17:15 ` Masami Hiramatsu
2019-05-06 14:22 ` Peter Zijlstra
2019-05-07 8:57 ` Peter Zijlstra
2019-05-07 9:18 ` David Laight
2019-05-07 11:30 ` Peter Zijlstra
2019-05-07 12:57 ` David Laight
2019-05-07 13:14 ` Steven Rostedt
2019-05-07 14:50 ` David Laight
2019-05-07 14:57 ` Steven Rostedt
2019-05-07 15:46 ` David Laight
2019-05-07 13:32 ` Peter Zijlstra
2019-05-07 9:27 ` Peter Zijlstra
2019-05-07 12:27 ` Steven Rostedt
2019-05-07 12:41 ` Peter Zijlstra
2019-05-07 12:54 ` Steven Rostedt
2019-05-07 17:22 ` Masami Hiramatsu
2019-05-07 14:28 ` Peter Zijlstra
2019-05-02 20:48 ` Steven Rostedt
2019-05-06 15:14 ` Josh Poimboeuf
2019-05-01 20:28 ` [RFC][PATCH 2/2] ftrace/x86: Emulate call function while updating in breakpoint handler Steven Rostedt
2019-05-03 10:22 ` [RFC][PATCH 1.5/2] x86: Add int3_emulate_call() selftest Peter Zijlstra
2019-05-03 18:46 ` 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=20190507095103.GP2606@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=jgross@suse.com \
--cc=jikos@kernel.org \
--cc=joe.lawrence@redhat.com \
--cc=jpoimboe@redhat.com \
--cc=jroedel@suse.de \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=mbenes@suse.cz \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=nayna@linux.ibm.com \
--cc=ndesaulniers@google.com \
--cc=nstange@suse.de \
--cc=pmladek@suse.com \
--cc=rostedt@goodmis.org \
--cc=shuah@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tim.c.chen@linux.intel.com \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
--cc=yamada.masahiro@socionext.com \
--cc=zohar@linux.ibm.com \
/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