KVM: x86: DR6/7.RTM cannot be written
authorNadav Amit <namit@cs.technion.ac.il>
Tue, 15 Jul 2014 14:37:46 +0000 (17:37 +0300)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 21 Jul 2014 15:17:52 +0000 (17:17 +0200)
commit6f43ed01e87c8a8dbd8c826eaf0f714c1342c039
tree96064816637d154889b1b4bea5e6c5dd6062c9bf
parent9a2a05b9ed618b1bb6d4cbec0c2e1f80d6636609
KVM: x86: DR6/7.RTM cannot be written

Haswell and newer Intel CPUs have support for RTM, and in that case DR6.RTM is
not fixed to 1 and DR7.RTM is not fixed to zero. That is not the case in the
current KVM implementation. This bug is apparent only if the MOV-DR instruction
is emulated or the host also debugs the guest.

This patch is a partial fix which enables DR6.RTM and DR7.RTM to be cleared and
set respectively. It also sets DR6.RTM upon every debug exception. Obviously,
it is not a complete fix, as debugging of RTM is still unsupported.

Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/cpuid.h
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c