• Chenyi Qiang's avatar
    KVM: X86: Add support for the emulation of DR6_BUS_LOCK bit · e8ea85fb
    Chenyi Qiang authored
    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: default avatarXiaoyao Li <xiaoyao.li@intel.com>
    Signed-off-by: default avatarXiaoyao Li <xiaoyao.li@intel.com>
    Signed-off-by: default avatarChenyi Qiang <chenyi.qiang@intel.com>
    Message-Id: <20210202090433.13441-3-chenyi.qiang@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>