]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: X86: Add support for the emulation of DR6_BUS_LOCK bit
authorChenyi Qiang <chenyi.qiang@intel.com>
Tue, 2 Feb 2021 09:04:32 +0000 (17:04 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 7 May 2021 10:06:20 +0000 (06:06 -0400)
commitb950ca978387abb6f93852ee7c654f9a638db443
tree6ad310be0f82c7b1d735aab6e2c5da2a0de8d5c2
parent34b8ad40c5913c65d65fdaa10b87cdbd47657ef2
KVM: X86: Add support for the emulation of DR6_BUS_LOCK bit

Bus lock debug exception introduces a new bit DR6_BUS_LOCK (bit 11 of
DR6) to indicate that bus lock #DB exception is generated. The set/clear
of DR6_BUS_LOCK is similar to the DR6_RTM. The processor clears
DR6_BUS_LOCK when the exception is generated. For all other #DB, the
processor sets this bit to 1. Software #DB handler should set this bit
before returning to the interrupted task.

In VMM, to avoid breaking the CPUs without bus lock #DB exception
support, activate the DR6_BUS_LOCK conditionally in DR6_FIXED_1 bits.
When intercepting the #DB exception caused by bus locks, bit 11 of the
exit qualification is set to identify it. The VMM should emulate the
exception by clearing the bit 11 of the guest DR6.

Co-developed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com>
Message-Id: <20210202090433.13441-3-chenyi.qiang@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/x86.c