From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Andi Kleen <andi@firstfloor.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>, Jiri Slaby <jirislaby@gmail.com>,
David Miller <davem@davemloft.net>,
zdenek.kabelac@gmail.com, rjw@sisk.pl,
paulmck@linux.vnet.ibm.com, akpm@linux-foundation.org,
linux-ext4@vger.kernel.org, herbert@gondor.apana.org.au,
penberg@cs.helsinki.fi, clameter@sgi.com,
linux-kernel@vger.kernel.org, pageexec@freemail.hu,
"H. Peter Anvin" <hpa@zytor.com>,
Jeremy Fitzhardinge <jeremy@goop.org>
Subject: Re: [PATCH 1/1] x86: fix text_poke
Date: Fri, 25 Apr 2008 12:30:35 -0400 [thread overview]
Message-ID: <20080425163035.GE9503@Krystal> (raw)
In-Reply-To: <20080425161916.GD3265@one.firstfloor.org>
* Andi Kleen (andi@firstfloor.org) wrote:
> On Fri, Apr 25, 2008 at 09:06:37AM -0700, Linus Torvalds wrote:
> >
> >
> > On Fri, 25 Apr 2008, Andi Kleen wrote:
> > >
> > > So all these checks can be just removed.
> >
> > Quite frankly, I'd rather tighten them up. All the callers actually seem
> > to do just a single-byte one.
>
> I think Mathieu did them to prepare for his immediate values which
> need to write more bytes (although actually it would be quite
> possible to have immediate values only for byte immediates too)
>
> But that code needs much more infrastructure anyways.
>
Yes, the immediate values, in general, only need to do atomic writes,
because I have taken care of placing the mov instruction in the correct
alignment so its immediate value happens to be aligned in memory.
However, the latest optimisation I did to change a conditional branch
into a jump when the correct code pattern is detected :
mov, test, bne short
into a
nop2, nop2, nop1, jmp short
or
mov, test, bne near
into a
nop2, nop2, nop1, jmp near
"replace_instruction_safe" is used for that. It puts a breakpoint in
lieue of each instruction's first byte before changing the rest of the
(potentially non aligned) instruction non atomically, and only then,
after issuing a sync_core on every CPUs to flush the trace cache, does
it put back the first byte, so it's done safely wrt intel's erratas
regarding code modification on SMP. Also note that it changes a 6 bytes
branch instruction into a 1 byte nop + 5 byte jump in the near jump
case, which is ok : you can split an instruction in multiple smaller
instructions safely on a live system wrt any execution context, but the
opposite is _not_ ok, since there could be a return address pointing in
the middle of the grouped instructions sitting on some other kernel
thread or interrupt stack (we should also take into account hypervisor
interaction here).
Mathieu
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2008-04-25 16:30 UTC|newest]
Thread overview: 183+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-19 13:22 2.6.25-git1: Solid hang on HP nx6325 (64-bit) Rafael J. Wysocki
2008-04-20 19:04 ` 2.6.25-git2: BUG: unable to handle kernel paging request at ffffffffffffffff Rafael J. Wysocki
2008-04-20 19:14 ` Rafael J. Wysocki
2008-04-20 21:31 ` Linus Torvalds
2008-04-21 1:18 ` Herbert Xu
2008-04-21 2:08 ` Paul E. McKenney
2008-04-21 4:59 ` Paul E. McKenney
2008-04-21 5:47 ` Paul E. McKenney
2008-04-21 13:00 ` Ingo Molnar
2008-04-21 16:06 ` Linus Torvalds
2008-04-21 16:24 ` Rafael J. Wysocki
2008-04-21 15:49 ` Linus Torvalds
2008-04-21 17:05 ` Paul E. McKenney
2008-04-21 17:30 ` Linus Torvalds
2008-04-21 17:43 ` Paul E. McKenney
2008-04-22 1:03 ` Herbert Xu
2008-04-22 13:36 ` Paul E. McKenney
2008-04-21 16:12 ` Rafael J. Wysocki
2008-04-21 16:54 ` Linus Torvalds
2008-04-21 17:06 ` Jiri Slaby
2008-04-21 17:19 ` Rafael J. Wysocki
2008-04-21 17:48 ` Linus Torvalds
2008-04-21 18:22 ` Rafael J. Wysocki
2008-04-21 19:38 ` Jiri Slaby
2008-04-21 20:39 ` David Miller
2008-04-21 21:18 ` Jiri Slaby
2008-04-21 21:58 ` Jiri Slaby
2008-04-21 22:26 ` Jiri Slaby
2008-04-21 22:54 ` Paul E. McKenney
2008-04-21 23:02 ` Jiri Slaby
2008-04-21 23:11 ` Zdenek Kabelac
2008-04-21 23:17 ` Jiri Slaby
2008-04-22 0:54 ` Rafael J. Wysocki
2008-04-22 1:14 ` Linus Torvalds
2008-04-22 1:30 ` Rafael J. Wysocki
2008-04-22 9:49 ` Jiri Slaby
2008-04-22 9:53 ` Ingo Molnar
2008-04-22 18:35 ` Zdenek Kabelac
2008-04-22 18:48 ` Linus Torvalds
2008-04-22 20:34 ` device_pm_add (was: Re: 2.6.25-git2: BUG: unable to handle kernel paging request at ffffffffffffffff) Rafael J. Wysocki
2008-04-22 20:57 ` Rafael J. Wysocki
2008-04-22 22:11 ` Greg KH
2008-04-22 20:58 ` Linus Torvalds
2008-04-22 22:12 ` Greg KH
2008-04-22 22:48 ` Rafael J. Wysocki
2008-04-23 0:50 ` Rafael J. Wysocki
2008-04-23 14:56 ` Alan Stern
2008-04-23 8:50 ` 2.6.25-git2: BUG: unable to handle kernel paging request at ffffffffffffffff Zdenek Kabelac
2008-04-23 15:53 ` Linus Torvalds
2008-04-23 16:58 ` Pekka Enberg
2008-04-23 17:28 ` Zdenek Kabelac
2008-04-23 17:40 ` Ingo Molnar
2008-04-23 18:52 ` Pekka Enberg
2008-04-23 19:05 ` Christoph Lameter
2008-04-23 19:19 ` Pekka J Enberg
2008-04-23 19:28 ` Christoph Lameter
2008-04-23 20:27 ` Zdenek Kabelac
2008-04-24 22:26 ` Jiri Slaby
2008-04-24 22:41 ` Linus Torvalds
2008-04-25 0:57 ` Jiri Slaby
2008-04-24 23:45 ` Linus Torvalds
2008-04-25 7:36 ` Jiri Slaby
2008-04-25 14:09 ` Pavel Machek
2008-04-25 15:30 ` Rafael J. Wysocki
2008-04-25 17:10 ` Jiri Slaby
2008-04-25 9:13 ` David Miller
2008-04-25 12:15 ` Zdenek Kabelac
2008-04-25 12:27 ` Zdenek Kabelac
2008-04-28 0:51 ` [PATCH 1/1] x86: fix text_poke Jiri Slaby
2008-04-25 15:03 ` Linus Torvalds
2008-04-25 15:17 ` Andi Kleen
2008-04-25 19:36 ` Christoph Lameter
2008-04-26 9:59 ` Andi Kleen
2008-04-26 11:16 ` Jiri Slaby
2008-04-26 11:34 ` Andi Kleen
2008-04-28 20:24 ` VIRTUAL_BUG_ON() Christoph Lameter
2008-05-01 19:22 ` [RFC 1/1] mm: add virt to phys debug Jiri Slaby
2008-05-01 20:18 ` Christoph Lameter
2008-05-06 21:54 ` Jiri Slaby
2008-05-07 17:30 ` Christoph Lameter
2008-05-13 14:38 ` Jiri Slaby
2008-04-25 15:19 ` [PATCH 1/1] x86: fix text_poke Ingo Molnar
2008-04-25 15:26 ` Ingo Molnar
2008-04-25 15:32 ` Ingo Molnar
2008-04-25 15:33 ` Linus Torvalds
2008-04-25 15:48 ` Andi Kleen
2008-04-25 16:06 ` Linus Torvalds
2008-04-25 16:19 ` Andi Kleen
2008-04-25 16:24 ` Linus Torvalds
2008-04-25 16:33 ` Ingo Molnar
2008-04-25 18:13 ` Jeremy Fitzhardinge
2008-05-05 2:36 ` Nick Piggin
2008-04-25 16:30 ` Mathieu Desnoyers [this message]
2008-04-25 16:42 ` H. Peter Anvin
2008-04-25 17:09 ` Mathieu Desnoyers
2008-04-25 18:37 ` Mathieu Desnoyers
2008-04-25 18:47 ` H. Peter Anvin
2008-04-25 19:19 ` H. Peter Anvin
2008-04-25 20:04 ` Mathieu Desnoyers
2008-04-25 20:09 ` H. Peter Anvin
2008-04-25 20:18 ` H. Peter Anvin
2008-04-25 20:37 ` Mathieu Desnoyers
2008-04-25 20:41 ` H. Peter Anvin
2008-04-25 20:51 ` Linus Torvalds
2008-04-25 21:12 ` Mathieu Desnoyers
2008-04-25 21:15 ` H. Peter Anvin
2008-04-25 21:47 ` Mathieu Desnoyers
2008-04-25 22:07 ` H. Peter Anvin
2008-04-25 22:30 ` Mathieu Desnoyers
2008-04-25 22:36 ` Linus Torvalds
2008-04-28 20:21 ` Ingo Molnar
2008-04-28 20:55 ` Jeremy Fitzhardinge
2008-04-28 21:01 ` H. Peter Anvin
2008-04-28 22:42 ` Mathieu Desnoyers
2008-04-28 20:43 ` Mathieu Desnoyers
2008-04-28 21:02 ` Jeremy Fitzhardinge
2008-05-04 15:03 ` Mathieu Desnoyers
2008-05-04 16:18 ` H. Peter Anvin
2008-04-25 22:38 ` H. Peter Anvin
2008-04-25 22:04 ` Linus Torvalds
2008-04-25 23:00 ` Mathieu Desnoyers
2008-04-25 23:13 ` Jeremy Fitzhardinge
2008-04-25 23:34 ` Masami Hiramatsu
2008-04-26 6:21 ` Jeremy Fitzhardinge
2008-04-26 11:56 ` Arnaldo Carvalho de Melo
2008-04-26 23:38 ` Jeremy Fitzhardinge
2008-04-27 1:00 ` Arnaldo Carvalho de Melo
2008-04-26 2:12 ` Frank Ch. Eigler
2008-06-05 17:44 ` Frank Ch. Eigler
2008-04-26 6:50 ` Jeremy Fitzhardinge
2008-04-28 0:49 ` Masami Hiramatsu
2008-04-25 21:02 ` David Miller
2008-04-25 21:11 ` H. Peter Anvin
2008-04-25 16:22 ` Ingo Molnar
2008-04-25 16:37 ` Linus Torvalds
2008-04-25 16:43 ` Ingo Molnar
2008-04-25 16:45 ` Ingo Molnar
2008-04-25 16:51 ` Linus Torvalds
2008-04-25 17:02 ` Ingo Molnar
2008-04-25 17:13 ` Linus Torvalds
2008-04-25 17:26 ` Andi Kleen
2008-04-25 17:29 ` Linus Torvalds
2008-04-25 17:53 ` Ingo Molnar
2008-04-25 18:04 ` Ingo Molnar
2008-04-25 18:09 ` Linus Torvalds
2008-04-25 18:19 ` Ingo Molnar
2008-04-25 18:56 ` Ingo Molnar
2008-04-25 18:13 ` Ingo Molnar
2008-04-25 16:52 ` Ingo Molnar
2008-04-25 16:56 ` Andi Kleen
2008-04-25 15:50 ` Ingo Molnar
2008-04-25 15:57 ` H. Peter Anvin
2008-04-25 18:53 ` Pavel Machek
2008-04-25 16:11 ` Linus Torvalds
2008-04-25 15:54 ` Mathieu Desnoyers
2008-04-25 15:59 ` Ingo Molnar
2008-04-25 16:11 ` Mathieu Desnoyers
2008-04-25 15:27 ` Andi Kleen
2008-04-25 20:18 ` David Miller
2008-04-25 1:35 ` 2.6.25-git2: BUG: unable to handle kernel paging request at ffffffffffffffff David Miller
2008-04-25 1:48 ` Linus Torvalds
2008-04-25 1:57 ` David Miller
2008-04-25 7:41 ` Jiri Slaby
2008-04-25 7:45 ` David Miller
2008-04-25 8:02 ` Jiri Slaby
2008-04-25 8:18 ` pci commands resume order [Was: 2.6.25-git2: BUG: unable to handle kernel paging request at ffffffffffffffff] Jiri Slaby
2008-04-25 17:11 ` Jesse Barnes
2008-04-25 10:53 ` 2.6.25-git2: BUG: unable to handle kernel paging request at ffffffffffffffff Craig Schlenter
2008-04-25 7:42 ` Jiri Slaby
2008-04-25 7:49 ` David Miller
2008-04-25 7:56 ` Jiri Slaby
2008-04-25 7:58 ` David Miller
2008-04-25 8:00 ` Jiri Slaby
2008-04-25 15:47 ` Randy Dunlap
2008-04-22 21:46 ` Rafael J. Wysocki
2008-04-22 19:09 ` Ingo Molnar
2008-04-22 1:15 ` Rafael J. Wysocki
2008-04-22 1:25 ` [ProbableSpam]Re: " Paul E. McKenney
2008-04-21 21:19 ` Linus Torvalds
2008-04-21 21:54 ` David Miller
2008-04-21 13:17 ` Ingo Molnar
2008-04-21 13:35 ` Rafael J. Wysocki
2008-04-21 18:56 ` Ingo Molnar
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=20080425163035.GE9503@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=clameter@sgi.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=jirislaby@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=pageexec@freemail.hu \
--cc=paulmck@linux.vnet.ibm.com \
--cc=penberg@cs.helsinki.fi \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.org \
--cc=zdenek.kabelac@gmail.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