KVM: svm: 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:04 +0000 (10:46 +0100)
commitfacb0139698923dc7b7d15cafbb319219969f4fd
treed2f4e83b00ecfc8d744c8f8af5510bca5a8185cc
parent5315c716b69f47e1751d09e16c7bd5b559419531
KVM: svm: 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/svm.c