KVM: vmx: speed up emulation of invalid guest state
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 27 Mar 2014 08:51:52 +0000 (09:51 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 11 Jul 2014 07:13:56 +0000 (09:13 +0200)
commit98eb2f8b145cee711984d42eff5d6f19b6b1df69
treeda28ce5a2a8dd362479ca4bd4d165254823c439f
parent22d48b2d2aa0b078816eaa1e15e485811a2d03fa
KVM: vmx: speed up emulation of invalid guest state

About 25% of the time spent in emulation of invalid guest state
is wasted in checking whether emulation is required for the next
instruction.  However, this almost never changes except when a
segment register (or TR or LDTR) changes, or when there is a mode
transition (i.e. CR0 changes).

In fact, vmx_set_segment and vmx_set_cr0 already modify
vmx->emulation_required (except that the former for some reason
uses |= instead of just an assignment).  So there is no need to
call guest_state_valid in the emulation loop.

Emulation performance test results indicate 1650-2600 cycles
for common instructions, versus 2300-3200 before this patch on
a Sandy Bridge Xeon.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx.c