linux-IllusionX/arch
Zachary Amsden a520112930 [PATCH] x86: make IOPL explicit
The pushf/popf in switch_to are ONLY used to switch IOPL.  Making this
explicit in C code is more clear.  This pushf/popf pair was added as a
bugfix for leaking IOPL to unprivileged processes when using
sysenter/sysexit based system calls (sysexit does not restore flags).

When requesting an IOPL change in sys_iopl(), it is just as easy to change
the current flags and the flags in the stack image (in case an IRET is
required), but there is no reason to force an IRET if we came in from the
SYSENTER path.

This change is the minimal solution for supporting a paravirtualized Linux
kernel that allows user processes to run with I/O privilege.  Other
solutions require radical rewrites of part of the low level fault / system
call handling code, or do not fully support sysenter based system calls.

Unfortunately, this added one field to the thread_struct.  But as a bonus,
on P4, the fastest time measured for switch_to() went from 312 to 260
cycles, a win of about 17% in the fast case through this performance
critical path.

Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05 00:06:12 -07:00
..
alpha
arm
arm26
cris
frv [PATCH] frv: Remove export of strtok() 2005-09-05 00:06:01 -07:00
h8300
i386 [PATCH] x86: make IOPL explicit 2005-09-05 00:06:12 -07:00
ia64
m32r
m68k
m68knommu
mips [PATCH] mips: fix build warnings 2005-09-05 00:06:08 -07:00
parisc
ppc [PATCH] ppc32: cpci690 updates 2005-09-05 00:06:01 -07:00
ppc64 [PATCH] ppc64: replace schedule_timeout() with msleep_interruptible() 2005-09-05 00:06:01 -07:00
s390
sh
sh64 [PATCH] arch/sh64/Kconfig: doesn't need it's own LOG_BUF_SHIFT 2005-09-05 00:06:09 -07:00
sparc
sparc64
um
v850
x86_64
xtensa