x86-32: use non-lazy io bitmap context switching
authorJeremy Fitzhardinge <jeremy@goop.org>
Fri, 27 Feb 2009 21:25:21 +0000 (13:25 -0800)
committerIngo Molnar <mingo@elte.hu>
Mon, 2 Mar 2009 11:07:48 +0000 (12:07 +0100)
commitdb949bba3c7cf2e664ac12e237c6d4c914f0c69d
tree4de65831dd1de95f642bed15bc9788edd74c48da
parent645af4e9e0e32481e3336dda813688732c7e5f0f
x86-32: use non-lazy io bitmap context switching

Impact: remove 32-bit optimization to prepare unification

x86-32 and -64 differ in the way they context-switch tasks
with io permission bitmaps.  x86-64 simply copies the next
tasks io bitmap into place (if any) on context switch.  x86-32
invalidates the bitmap on context switch, so that the next
IO instruction will fault; at that point it installs the
appropriate IO bitmap.

This makes context switching IO-bitmap-using tasks a bit more
less expensive, at the cost of making the next IO instruction
slower due to the extra fault.  This tradeoff only makes sense
if IO-bitmap-using processes are relatively common, but they
don't actually use IO instructions very often.

However, in a typical desktop system, the only process likely
to be using IO bitmaps is the X server, and nothing at all on
a server.  Therefore the lazy context switch doesn't really win
all that much, and its just a gratuitious difference from
64-bit code.

This patch removes the lazy context switch, with a view to
unifying this code in a later change.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/processor.h
arch/x86/kernel/ioport.c
arch/x86/kernel/process_32.c
arch/x86/kernel/traps.c