From: Andi Kleen <ak@muc.de>
To: Manfred Spraul <manfred@colorfullife.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Intel P6 vs P7 system call performance
Date: 30 Dec 2002 15:54:56 +0100 [thread overview]
Message-ID: <m3adino8u7.fsf@averell.firstfloor.org> (raw)
In-Reply-To: <3E1044D4.6050409@colorfullife.com>
Manfred Spraul <manfred@colorfullife.com> writes:
> - The AMD docs contain one odd sentence:
> "The CS and SS registers must not be modified by the operating system
> between the execution of the SYSCALL and the corresponding SYSRET
> instruction".
As I understand it is:
SYSCALL does not actually load the new CS/SS from the GDT,
but just set the internal base/limit/descriptor valid registers to
"flat" values. SYSEXIT undo this. When the SYSRET is executed the
selector should be still the same, otherwise the resulting state may not be
exactly the same as when SYSCALL happend.
But if you make sure that CS/SS have the same state on SYSRET then
everything should be ok. This means a context switch to a process with
possibly different CS/SS values should be ok.
The GDT is guaranteed to stay constant and SYSCALL forbids use of an
LDT for SS/CS.
I have not actually tried this on an Athlon, but on x86-64 with
entering long mode it works (including context switches to processes with
different segments etc.)
To add to confusion there are three different all slightly different
SYSCALL flavours:
K6 (unusable iirc), Athlon/Hammer with 32bit OS
(would work, but they have SYSENTER too so it makes sense to just share code
with Intel), Hammer with 64bit OS (working, has to use SYSCALL from both
32bit and 64bit processes)
They are different in what registers they clobber and how EFLAGS is handled
and some other details.
On x86-64 SYSCALL is the only and native system call entry instruction
for 64bit processes. The only reason to use SYSCALL from 32bit programs is
that on a x86-64 SYSENTER from 32bit processes to 64bit kernels is not
supported, so the 2.5.53 x86-64 kernel implements the AT_SYSINFO vsyscall
page using SYSCALL.
> Is SYSCALL+iretd permitted? That's needed for execve, iopl, task
Yes, it works.
> switches, signal delivery.
> What about interrupts during SYSCALLs?
SYSCALL in 32bit mode turns off IF on entry (in long mode it is configurable
using a MSR)
-Andi
next prev parent reply other threads:[~2002-12-30 14:46 UTC|newest]
Thread overview: 268+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-30 13:06 Intel P6 vs P7 system call performance Manfred Spraul
2002-12-30 14:54 ` Andi Kleen [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-01-10 18:08 Gabriel Paubert
2002-12-22 15:45 Nakajima, Jun
2002-12-22 12:33 Mikael Pettersson
2002-12-22 16:00 ` Jamie Lokier
2002-12-19 18:46 billyrose
2002-12-19 16:10 billyrose
2002-12-19 15:20 bart
2002-12-19 14:57 bart
2002-12-19 14:40 billyrose
2002-12-19 15:11 ` Richard B. Johnson
2002-12-19 13:55 bart
2002-12-19 19:37 ` Linus Torvalds
2002-12-19 22:10 ` Jamie Lokier
2002-12-19 22:16 ` H. Peter Anvin
2002-12-19 22:22 ` Linus Torvalds
2002-12-19 22:26 ` H. Peter Anvin
2002-12-19 22:49 ` Linus Torvalds
2002-12-19 23:30 ` Linus Torvalds
2002-12-22 11:08 ` James H. Cloos Jr.
2002-12-22 18:49 ` Linus Torvalds
2002-12-22 19:07 ` Ulrich Drepper
2002-12-22 19:34 ` Linus Torvalds
2002-12-22 19:51 ` Ulrich Drepper
2002-12-22 20:50 ` James H. Cloos Jr.
2002-12-22 20:56 ` Ulrich Drepper
2002-12-22 19:17 ` Ulrich Drepper
2002-12-20 10:08 ` Ulrich Drepper
2002-12-20 12:06 ` Jamie Lokier
2002-12-20 16:47 ` Linus Torvalds
2002-12-20 23:38 ` Jamie Lokier
2002-12-20 23:50 ` H. Peter Anvin
2002-12-21 0:09 ` Linus Torvalds
2002-12-21 17:18 ` Jamie Lokier
2002-12-21 19:39 ` Linus Torvalds
2002-12-22 2:18 ` Jamie Lokier
2002-12-22 3:11 ` Linus Torvalds
2002-12-22 10:13 ` Ingo Molnar
2002-12-22 15:32 ` Jamie Lokier
2002-12-22 18:53 ` Linus Torvalds
2002-12-23 5:03 ` Linus Torvalds
2002-12-23 7:14 ` Ulrich Drepper
2002-12-23 23:27 ` Petr Vandrovec
2002-12-24 0:22 ` Stephen Rothwell
2002-12-24 4:10 ` Linus Torvalds
2002-12-24 8:05 ` Rogier Wolff
2002-12-24 18:51 ` Linus Torvalds
2002-12-24 21:10 ` Rogier Wolff
2002-12-27 16:14 ` Kai Henningsen
2002-12-24 19:36 ` Linus Torvalds
2002-12-24 20:20 ` Ingo Molnar
2002-12-24 20:27 ` Linus Torvalds
2002-12-24 20:31 ` Ingo Molnar
2002-12-24 20:39 ` Linus Torvalds
2002-12-28 2:05 ` H. Peter Anvin
2002-12-28 2:04 ` H. Peter Anvin
2002-12-26 7:47 ` Pavel Machek
2003-01-10 11:30 ` Gabriel Paubert
2003-01-10 17:11 ` Linus Torvalds
2002-12-22 10:23 ` Ingo Molnar
2002-12-19 13:22 bart
2002-12-19 13:38 ` Dave Jones
2002-12-19 14:22 ` Jamie Lokier
2002-12-19 16:56 ` Dave Jones
2002-12-19 19:29 ` H. Peter Anvin
2002-12-18 23:51 billyrose
2002-12-19 13:10 ` Richard B. Johnson
2002-12-18 12:55 Terje Eggestad
2002-12-18 20:14 ` H. Peter Anvin
2002-12-18 20:25 ` Richard B. Johnson
2002-12-18 20:26 ` H. Peter Anvin
2002-12-18 22:28 ` Jamie Lokier
2002-12-18 22:37 ` Linus Torvalds
2002-12-18 22:57 ` Linus Torvalds
2002-12-20 0:53 ` Daniel Jacobowitz
2002-12-20 1:47 ` Linus Torvalds
2002-12-20 2:37 ` Daniel Jacobowitz
2002-12-18 22:39 ` H. Peter Anvin
2002-12-18 1:30 Nakajima, Jun
2002-12-18 1:54 ` Ulrich Drepper
2002-12-18 3:36 ` H. Peter Anvin
2002-12-18 4:05 ` Linus Torvalds
2002-12-18 4:36 ` H. Peter Anvin
2002-12-18 4:07 ` Linus Torvalds
2002-12-18 4:40 ` Stephen Rothwell
2002-12-18 4:52 ` Linus Torvalds
2002-12-18 4:53 ` Andrew Morton
2002-12-18 19:12 ` Andrew Morton
2002-12-18 23:45 ` Pavel Machek
2002-12-20 3:05 ` Alan Cox
2002-12-20 4:03 ` Stephen Rothwell
2002-12-18 6:00 ` Brian Gerst
2002-12-17 16:32 Manfred Spraul
2002-12-17 17:13 ` Richard B. Johnson
2002-12-17 17:19 ` Richard B. Johnson
2002-12-17 17:37 ` Mikael Pettersson
2002-12-17 16:14 John Reiser
2002-12-17 16:01 John Reiser
[not found] <20021209193649.GC10316@suse.de.suse.lists.linux.kernel>
[not found] ` <Pine.LNX.4.44.0212161639310.1623-100000@penguin.transmeta.com.suse.lists.linux.kernel>
2002-12-17 8:56 ` Andi Kleen
2002-12-17 16:57 ` Linus Torvalds
2002-12-18 5:25 ` Brian Gerst
2002-12-18 6:06 ` Linus Torvalds
2002-12-21 11:24 ` Ingo Molnar
2002-12-21 17:28 ` Jamie Lokier
2002-12-21 16:07 ` Christian Leber
2002-12-15 8:43 scott thomason
2002-12-15 4:06 Albert D. Cahalan
2002-12-15 22:01 ` Pavel Machek
2002-12-16 7:33 ` Albert D. Cahalan
2002-12-16 11:17 ` Pavel Machek
2002-12-16 17:54 ` Mark Mielke
2002-12-16 16:07 ` Jonah Sherman
2002-12-17 4:10 ` David Schwartz
2002-12-17 8:02 ` Helge Hafting
2002-12-16 19:55 ` H. Peter Anvin
2002-12-13 21:52 Margit Schubert-While
2002-12-13 19:32 Dieter Nützel
2002-12-13 17:51 Margit Schubert-While
2002-12-11 12:48 Terje Eggestad
2002-12-11 18:50 ` H. Peter Anvin
2002-12-12 9:42 ` Terje Eggestad
2002-12-12 10:06 ` Arjan van de Ven
2002-12-12 10:31 ` Terje Eggestad
2002-12-12 19:03 ` H. Peter Anvin
2002-12-12 20:36 ` Mark Mielke
2002-12-12 20:56 ` J.A. Magallon
2002-12-12 20:12 ` Zac Hansen
2002-12-13 9:21 ` Terje Eggestad
2002-12-13 15:58 ` Ville Herva
2002-12-13 21:57 ` Terje Eggestad
2002-12-13 22:53 ` H. Peter Anvin
2002-12-12 20:56 ` Vojtech Pavlik
2002-12-09 8:30 Mike Hayward
2002-12-09 15:40 ` erich
2002-12-09 17:48 ` Linus Torvalds
2002-12-09 19:36 ` Dave Jones
2002-12-09 19:46 ` H. Peter Anvin
2002-12-28 20:37 ` Ville Herva
2002-12-29 2:05 ` Christian Leber
2002-12-30 18:22 ` Christian Leber
2002-12-30 21:22 ` Linus Torvalds
2002-12-30 11:29 ` Dave Jones
2002-12-17 0:47 ` Linus Torvalds
2002-12-17 1:03 ` Dave Jones
2002-12-17 2:36 ` Linus Torvalds
2002-12-17 5:55 ` Linus Torvalds
2002-12-17 6:09 ` Linus Torvalds
2002-12-17 6:18 ` Linus Torvalds
2002-12-19 14:03 ` Shuji YAMAMURA
2002-12-17 6:19 ` GrandMasterLee
2002-12-17 6:43 ` dean gaudet
2002-12-17 16:50 ` Linus Torvalds
2002-12-17 19:11 ` H. Peter Anvin
2002-12-17 21:39 ` Benjamin LaHaise
2002-12-17 21:41 ` H. Peter Anvin
2002-12-17 21:53 ` Benjamin LaHaise
2002-12-18 23:53 ` Pavel Machek
2002-12-19 22:18 ` H. Peter Anvin
2002-12-19 22:21 ` Pavel Machek
2002-12-19 22:23 ` H. Peter Anvin
2002-12-19 22:26 ` Pavel Machek
2002-12-19 22:30 ` H. Peter Anvin
2002-12-19 22:34 ` Pavel Machek
2002-12-19 22:36 ` H. Peter Anvin
2002-12-17 19:12 ` H. Peter Anvin
2002-12-17 19:26 ` Martin J. Bligh
2002-12-17 20:51 ` Alan Cox
2002-12-17 20:16 ` H. Peter Anvin
2002-12-17 20:49 ` Alan Cox
2002-12-17 20:12 ` H. Peter Anvin
2002-12-17 9:45 ` Andre Hedrick
2002-12-17 12:40 ` Dave Jones
2002-12-17 23:18 ` Andre Hedrick
2002-12-17 15:12 ` Alan Cox
2002-12-18 23:55 ` Pavel Machek
2002-12-19 22:17 ` H. Peter Anvin
2002-12-17 10:53 ` Ulrich Drepper
2002-12-17 11:17 ` dada1
2002-12-17 17:33 ` Ulrich Drepper
2002-12-17 17:06 ` Linus Torvalds
2002-12-17 17:55 ` Ulrich Drepper
2002-12-17 18:01 ` Linus Torvalds
2002-12-17 19:23 ` Alan Cox
2002-12-17 18:48 ` Ulrich Drepper
2002-12-17 19:19 ` H. Peter Anvin
2002-12-17 19:44 ` Alan Cox
2002-12-17 19:52 ` Richard B. Johnson
2002-12-17 19:54 ` H. Peter Anvin
2002-12-17 19:58 ` Linus Torvalds
2002-12-18 7:20 ` Kai Henningsen
2002-12-17 18:49 ` Linus Torvalds
2002-12-17 19:09 ` Ross Biro
2002-12-17 21:34 ` Benjamin LaHaise
2002-12-17 21:36 ` H. Peter Anvin
2002-12-17 21:50 ` Benjamin LaHaise
2002-12-18 23:59 ` Pavel Machek
2002-12-17 16:12 ` Hugh Dickins
2002-12-17 16:33 ` Richard B. Johnson
2002-12-17 17:47 ` Linus Torvalds
2002-12-17 16:54 ` Hugh Dickins
2002-12-17 17:07 ` Linus Torvalds
2002-12-17 17:19 ` Matti Aarnio
2002-12-17 17:55 ` Linus Torvalds
2002-12-17 18:24 ` Linus Torvalds
2002-12-17 18:33 ` Ulrich Drepper
2002-12-17 18:30 ` Ulrich Drepper
2002-12-17 19:04 ` Linus Torvalds
2002-12-17 19:19 ` Ulrich Drepper
2002-12-17 19:28 ` Linus Torvalds
2002-12-17 19:32 ` H. Peter Anvin
2002-12-17 19:44 ` Linus Torvalds
2002-12-17 19:53 ` Ulrich Drepper
2002-12-17 20:01 ` Linus Torvalds
2002-12-17 20:17 ` Ulrich Drepper
2002-12-18 4:15 ` Linus Torvalds
2002-12-18 4:15 ` Linus Torvalds
2002-12-18 4:39 ` H. Peter Anvin
2002-12-18 4:49 ` Linus Torvalds
2002-12-18 6:38 ` Linus Torvalds
2002-12-18 13:17 ` Richard B. Johnson
2002-12-18 13:40 ` Horst von Brand
2002-12-18 13:47 ` Sean Neakums
2002-12-18 14:10 ` Horst von Brand
2002-12-18 14:51 ` dada1
2002-12-18 19:12 ` Mark Mielke
2002-12-18 15:52 ` Alan Cox
2002-12-18 16:41 ` Dave Jones
2002-12-18 18:41 ` Horst von Brand
2002-12-17 19:26 ` Alan Cox
2002-12-17 18:57 ` Ulrich Drepper
2002-12-17 19:10 ` Linus Torvalds
2002-12-17 19:21 ` H. Peter Anvin
2002-12-17 19:37 ` Linus Torvalds
2002-12-17 19:43 ` H. Peter Anvin
2002-12-17 20:07 ` Matti Aarnio
2002-12-17 20:10 ` H. Peter Anvin
2002-12-17 19:59 ` Matti Aarnio
2002-12-17 20:06 ` Ulrich Drepper
2002-12-17 20:35 ` Daniel Jacobowitz
2002-12-18 0:20 ` Linus Torvalds
2002-12-18 0:38 ` Ulrich Drepper
2002-12-18 7:41 ` Kai Henningsen
2002-12-18 13:00 ` Rogier Wolff
2002-12-17 19:47 ` Dave Jones
2002-12-18 12:57 ` Rogier Wolff
2002-12-19 0:14 ` Pavel Machek
2002-12-17 21:38 ` Benjamin LaHaise
2002-12-17 21:41 ` H. Peter Anvin
2002-12-17 18:39 ` Jeff Dike
2002-12-17 19:05 ` Linus Torvalds
2002-12-18 5:34 ` Jeremy Fitzhardinge
2002-12-18 5:38 ` H. Peter Anvin
2002-12-18 15:50 ` Alan Cox
2002-12-18 23:51 ` Pavel Machek
2002-12-13 15:45 ` William Lee Irwin III
2002-12-13 16:49 ` Mike Hayward
2002-12-14 0:55 ` GrandMasterLee
2002-12-14 4:41 ` Mike Dresser
2002-12-14 4:53 ` Mike Dresser
2002-12-14 10:01 ` Dave Jones
2002-12-14 17:48 ` Mike Dresser
2002-12-14 18:36 ` GrandMasterLee
2002-12-15 2:03 ` J.A. Magallon
2002-12-15 21:59 ` Pavel Machek
2002-12-15 22:37 ` William Lee Irwin III
2002-12-15 22:43 ` Pavel Machek
2002-12-09 7:01 Samium Gromoff
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=m3adino8u7.fsf@averell.firstfloor.org \
--to=ak@muc.de \
--cc=linux-kernel@vger.kernel.org \
--cc=manfred@colorfullife.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 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.