KVM: vmx: Allow the guest to run with dirty debug registers
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 21 Feb 2014 09:32:27 +0000 (10:32 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 11 Mar 2014 09:46:03 +0000 (10:46 +0100)
commit81908bf44340eb5ebc9969f67e6c8be0c92f2857
tree67fb9e8f536d8319c54f9e6af1d6cbaf844e6673
parentc77fb5fe6f031bee9403397ae7b94ea22ea19aa7
KVM: vmx: Allow the guest to run with dirty debug registers

When not running in guest-debug mode (i.e. the guest controls the debug
registers, having to take an exit for each DR access is a waste of time.
If the guest gets into a state where each context switch causes DR to be
saved and restored, this can take away as much as 40% of the execution
time from the guest.

If the guest is running with vcpu->arch.db == vcpu->arch.eff_db, we
can let it write freely to the debug registers and reload them on the
next exit.  We still need to exit on the first access, so that the
KVM_DEBUGREG_WONT_EXIT flag is set in switch_db_regs; after that, further
accesses to the debug registers will not cause a vmexit.

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