KVM: VMX: Optimize %ds, %es reload
authorAvi Kivity <avi@redhat.com>
Sun, 13 May 2012 16:53:24 +0000 (19:53 +0300)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 16 May 2012 19:03:19 +0000 (16:03 -0300)
commitb2da15ac26a0c00fc0d399a2bc5cf3c4e15f0b4f
tree7cf2f30e20976877b7bcef1b76a7441f474f062d
parent512d5649e8dc3ed36f2ebf0818da64a4d4c2544a
KVM: VMX: Optimize %ds, %es reload

On x86_64, we can defer %ds and %es reload to the heavyweight context switch,
since nothing in the lightweight paths uses the host %ds or %es (they are
ignored by the processor).  Furthermore we can avoid the load if the segments
are null, by letting the hardware load the null segments for us.  This is the
expected case.

On i386, we could avoid the reload entirely, since the entry.S paths take care
of reload, except for the SYSEXIT path which leaves %ds and %es set to __USER_DS.
So we set them to the same values as well.

Saves about 70 cycles out of 1600 (around 4%; noisy measurements).

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/kvm/vmx.c