From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: akpm@linux-foundation.org, Ingo Molnar <mingo@elte.hu>,
linux-kernel@vger.kernel.org, Andi Kleen <andi@firstfloor.org>,
Rusty Russell <rusty@rustcorp.com.au>, Andi Kleen <ak@muc.de>,
Chuck Ebbert <cebbert@redhat.com>,
Christoph Hellwig <hch@infradead.org>,
Jeremy Fitzhardinge <jeremy@goop.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Adrian Bunk <bunk@stusta.de>,
Alexey Dobriyan <adobriyan@gmail.com>,
akpm@osdl.org
Subject: Re: [patch 13/17] Immediate Values - x86 Optimization (updated)
Date: Wed, 9 Apr 2008 19:15:34 -0400 [thread overview]
Message-ID: <20080409231534.GA7842@Krystal> (raw)
In-Reply-To: <47FD4424.20907@zytor.com>
* H. Peter Anvin (hpa@zytor.com) wrote:
> Mathieu Desnoyers wrote:
>> Hrm, since even the nmi-safe version supports REX-prefixed instructions,
>> there is no need for an =q constraint on single-byte immediate values
>> anymore. (thanks to your "discard" section used in the nmi-safe version)
>
> WRONG!
>
> Using =r for single-byte values is incorrect for 32-bit code -- that would
> permit %spl, %bpl, %sil, %dil which are illegal in 32-bit mode. That is not
> the incorrect bit, it's the description that is confused.
>
> -hpa
Ah, right. I remembered there was something that made us use =q, but
could not remember what. I'll describe it correctly.
Therefore, this updated patch is bogus. The original one was ok, given
that we change the header to :
Immediate Values - x86 Optimization
x86 optimization of the immediate values which uses a movl with code patching
to set/unset the value used to populate the register used as variable source.
Note : a movb needs to get its value froma =q constraint.
Quoting "H. Peter Anvin" <hpa@zytor.com>
Using =r for single-byte values is incorrect for 32-bit code -- that would
permit %spl, %bpl, %sil, %dil which are illegal in 32-bit mode.
Changelog:
- Use text_poke_early with cr0 WP save/restore to patch the bypass. We are doing
non atomic writes to a code region only touched by us (nobody can execute it
since we are protected by the imv_mutex).
- Put imv_set and _imv_set in the architecture independent header.
- Use $0 instead of %2 with (0) operand.
- Add x86_64 support, ready for i386+x86_64 -> x86 merge.
- Use asm-x86/asm.h.
- Bugfix : 8 bytes 64 bits immediate value was declared as "4 bytes" in the
immediate structure.
- Change the immediate.c update code to support variable length opcodes.
- Vastly simplified, using a busy looping IPI with interrupts disabled.
Does not protect against NMI nor MCE.
- Pack the __imv section. Use smallest types required for size (char).
- Use imv_* instead of immediate_*.
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-09 23:20 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-09 15:08 [patch 00/17] Text Edit Lock and Immediate Values for 2.6.25-rc8-mm1 Mathieu Desnoyers
2008-04-09 15:08 ` [patch 01/17] Kprobes - use a mutex to protect the instruction pages list Mathieu Desnoyers
2008-04-09 20:08 ` Masami Hiramatsu
2008-04-09 15:08 ` [patch 02/17] Kprobes - do not use kprobes mutex in arch code Mathieu Desnoyers
2008-04-09 20:08 ` Masami Hiramatsu
2008-04-09 15:08 ` [patch 03/17] Kprobes - declare kprobe_mutex static Mathieu Desnoyers
2008-04-09 20:08 ` Masami Hiramatsu
2008-04-09 15:08 ` [patch 04/17] x86 - Enhance DEBUG_RODATA support - alternatives Mathieu Desnoyers
2008-04-09 15:08 ` [patch 05/17] x86 Fix text_poke for vmalloced pages Mathieu Desnoyers
2008-04-09 15:08 ` [patch 06/17] x86 - Enhance DEBUG_RODATA support for hotplug and kprobes Mathieu Desnoyers
2008-04-09 15:08 ` [patch 07/17] Text Edit Lock - Architecture Independent Code Mathieu Desnoyers
2008-04-09 15:08 ` [patch 08/17] Text Edit Lock - kprobes architecture independent support Mathieu Desnoyers
2008-04-09 15:08 ` [patch 09/17] Add all cpus option to stop machine run Mathieu Desnoyers
2008-04-09 18:10 ` Alexey Dobriyan
2008-04-09 18:24 ` Andi Kleen
2008-04-10 3:34 ` Rusty Russell
2008-04-10 4:26 ` KOSAKI Motohiro
2008-04-09 18:54 ` Mathieu Desnoyers
2008-04-09 15:08 ` [patch 10/17] Immediate Values - Architecture Independent Code Mathieu Desnoyers
2008-04-09 15:08 ` [patch 11/17] Implement immediate update via stop_machine_run Mathieu Desnoyers
2008-04-10 8:04 ` KOSAKI Motohiro
2008-04-10 20:01 ` Mathieu Desnoyers
2008-04-11 4:50 ` KOSAKI Motohiro
2008-04-09 15:08 ` [patch 12/17] Immediate Values - Kconfig menu in EMBEDDED Mathieu Desnoyers
2008-04-10 3:23 ` Rusty Russell
2008-04-10 19:32 ` [patch 12/17] Immediate Values - Kconfig menu in EMBEDDED (updated) Mathieu Desnoyers
2008-04-10 21:54 ` Rusty Russell
2008-04-14 23:52 ` Mathieu Desnoyers
2008-04-09 15:08 ` [patch 13/17] Immediate Values - x86 Optimization Mathieu Desnoyers
2008-04-09 18:01 ` H. Peter Anvin
2008-04-09 19:08 ` Mathieu Desnoyers
2008-04-09 22:33 ` H. Peter Anvin
2008-04-10 0:42 ` Mathieu Desnoyers
2008-04-10 0:47 ` H. Peter Anvin
2008-04-09 20:21 ` [patch 13/17] Immediate Values - x86 Optimization (updated) Mathieu Desnoyers
2008-04-09 22:33 ` H. Peter Anvin
2008-04-09 23:15 ` Mathieu Desnoyers [this message]
2008-04-09 15:08 ` [patch 14/17] Add text_poke and sync_core to powerpc Mathieu Desnoyers
2008-04-09 15:08 ` [patch 15/17] Immediate Values - Powerpc Optimization Mathieu Desnoyers
2008-04-09 15:08 ` [patch 16/17] Immediate Values - Documentation Mathieu Desnoyers
2008-04-10 3:33 ` Rusty Russell
2008-04-11 1:16 ` Mathieu Desnoyers
2008-04-11 15:06 ` Rusty Russell
2008-04-15 0:12 ` Mathieu Desnoyers
2008-04-11 13:44 ` [RFC PATCH] Immediate Values Support init Mathieu Desnoyers
2008-04-09 15:08 ` [patch 17/17] Scheduler Profiling - Use Immediate Values Mathieu Desnoyers
2008-04-10 4:23 ` [patch 00/17] Text Edit Lock and Immediate Values for 2.6.25-rc8-mm1 KOSAKI Motohiro
2008-04-10 7:31 ` Takashi Nishiie
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=20080409231534.GA7842@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
--cc=adobriyan@gmail.com \
--cc=ak@muc.de \
--cc=akpm@linux-foundation.org \
--cc=akpm@osdl.org \
--cc=andi@firstfloor.org \
--cc=bunk@stusta.de \
--cc=cebbert@redhat.com \
--cc=hch@infradead.org \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=rusty@rustcorp.com.au \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.