xen-devel
[Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been
To: |
Jeremy Fitzhardinge <jeremy@xxxxxxxx> |
Subject: |
[Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out |
From: |
Jason Baron <jbaron@xxxxxxxxxx> |
Date: |
Thu, 6 Oct 2011 14:10:55 -0400 |
Cc: |
the arch/x86 maintainers <x86@xxxxxxxxxx>, Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, David Daney <david.daney@xxxxxxxxxx>, peterz@xxxxxxxxxxxxx, Jan Glauber <jang@xxxxxxxxxxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Steven Rostedt <rostedt@xxxxxxxxxxx>, rth@xxxxxxxxxx, Michael Ellerman <michael@xxxxxxxxxxxxxx>, Xen Devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, "David S. Miller" <davem@xxxxxxxxxxxxx> |
Delivery-date: |
Sun, 09 Oct 2011 09:22:16 -0700 |
Envelope-to: |
www-data@xxxxxxxxxxxxxxxxxxx |
In-reply-to: |
<4E8DEB19.1050509@xxxxxxxx> |
List-help: |
<mailto:xen-devel-request@lists.xensource.com?subject=help> |
List-id: |
Xen developer discussion <xen-devel.lists.xensource.com> |
List-post: |
<mailto:xen-devel@lists.xensource.com> |
List-subscribe: |
<http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe> |
List-unsubscribe: |
<http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe> |
References: |
<cover.1317506051.git.jeremy.fitzhardinge@xxxxxxxxxx> <477dead9647029012f93c651f2892ed0e86b89e7.1317506051.git.jeremy.fitzhardinge@xxxxxxxxxx> <20111003150205.GB2462@xxxxxxxxxx> <4E89E28C.7010700@xxxxxxxx> <20111004141011.GA2520@xxxxxxxxxx> <4E8B3489.60902@xxxxxxxxx> <4E8CF348.4080405@xxxxxxxx> <4E8CF385.2080804@xxxxxxxxx> <4E8DEB19.1050509@xxxxxxxx> |
Sender: |
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx |
User-agent: |
Mutt/1.5.20 (2009-12-10) |
On Thu, Oct 06, 2011 at 10:53:29AM -0700, Jeremy Fitzhardinge wrote:
> On 10/05/2011 05:17 PM, H. Peter Anvin wrote:
> > On 10/05/2011 05:16 PM, Jeremy Fitzhardinge wrote:
> >> On 10/04/2011 09:30 AM, H. Peter Anvin wrote:
> >>> On 10/04/2011 07:10 AM, Jason Baron wrote:
> >>>> 1) The jmp +0, is a 'safe' no-op that I know is going to initially
> >>>> boot for all x86. I'm not sure if there is a 5-byte nop that works on
> >>>> all x86 variants - but by using jmp +0, we make it much easier to debug
> >>>> cases where we may be using broken no-ops.
> >>>>
> >>> There are *plenty*. jmp+0 is about as pessimal as you can get.
> >> As an aside, do you know if a 2-byte unconditional jmp is any more
> >> efficient than 5-byte, aside from just being a smaller instruction and
> >> taking less icache?
> >>
> > I don't know for sure, no. I probably depends on the CPU.
>
> Looks like jmp2 is about 5% faster than jmp5 on Sandybridge with this
> benchmark.
>
> But insignificant difference on Nehalem.
>
> J
It would be cool if we could make the total width 2-bytes, when
possible. It might be possible by making the initial 'JUMP_LABEL_INITIAL_NOP'
as a 'jmp' to the 'l_yes' label. And then patching that with a no-op at boot
time or link time - letting the compiler pick the width. In that way we could
get the optimal width...
thanks,
-Jason
> #include <stdio.h>
>
> struct {
> unsigned char flag;
> unsigned char val;
> } l;
>
> #define JMP2 asm volatile ("jmp 1f; .byte 0x0f,0x1f,0x00; 1: ");
> #define JMPJMP2 JMP2 JMP2
> #define JMPJMPJMP2 JMPJMP2 JMPJMP2
> #define JMPJMPJMP2 JMPJMP2 JMPJMP2
> #define JMPJMPJMPJMP2 JMPJMPJMP2 JMPJMPJMP2
> #define JMPJMPJMPJMPJMP2 JMPJMPJMPJMP2 JMPJMPJMPJMP2
> #define JMPJMPJMPJMPJMPJMP2 JMPJMPJMPJMPJMP2 JMPJMPJMPJMPJMP2
>
> int main(int argc, char **argv)
> {
> int i;
>
> for (i = 0; i < 100000000; i++) {
> JMPJMPJMPJMPJMPJMP2;
> asm volatile("" : : : "memory");
> }
>
> return 0;
> }
> #include <stdio.h>
>
> struct {
> unsigned char flag;
> unsigned char val;
> } l;
>
> #define JMP5 asm volatile (".byte 0xe9; .long 0");
> #define JMPJMP5 JMP5 JMP5
> #define JMPJMPJMP5 JMPJMP5 JMPJMP5
> #define JMPJMPJMP5 JMPJMP5 JMPJMP5
> #define JMPJMPJMPJMP5 JMPJMPJMP5 JMPJMPJMP5
> #define JMPJMPJMPJMPJMP5 JMPJMPJMPJMP5 JMPJMPJMPJMP5
> #define JMPJMPJMPJMPJMPJMP5 JMPJMPJMPJMPJMP5 JMPJMPJMPJMPJMP5
>
> int main(int argc, char **argv)
> {
> int i;
>
> for (i = 0; i < 100000000; i++) {
> JMPJMPJMPJMPJMPJMP5;
> asm volatile("" : : : "memory");
> }
>
> return 0;
> }
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, (continued)
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jason Baron
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Steven Rostedt
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jason Baron
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, H. Peter Anvin
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, H. Peter Anvin
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out,
Jason Baron <=
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jason Baron
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, H. Peter Anvin
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jason Baron
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, H. Peter Anvin
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jeremy Fitzhardinge
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Steven Rostedt
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Steven Rostedt
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, H. Peter Anvin
- [Xen-devel] Re: [PATCH RFC V2 3/5] jump_label: if a key has already been initialized, don't nop it out, Jason Baron
|
|
|