mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-24 02:08:04 +00:00
HV: enable #GP for UC lock
For an atomic operation using bus locking, it would generate LOCK# bus signal, if it has Non-WB memory operand. This is an UC lock. It will ruin the RT behavior of the system. If MSR_IA32_CORE_CAPABILITIES[bit4] is 1, then CPU can trigger #GP for instructions which cause UC lock. This feature is controlled by MSR_TEST_CTL[bit28]. This patch enables #GP for guest UC lock. Tracked-On: #6299 Signed-off-by: Tao Yuhong <yuhong.tao@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
@@ -589,7 +589,7 @@ int32_t rdmsr_vmexit_handler(struct acrn_vcpu *vcpu)
|
||||
/* If has MSR_TEST_CTL, give emulated value
|
||||
* If don't have MSR_TEST_CTL, trigger #GP
|
||||
*/
|
||||
if (has_core_cap(1U << 5U)) {
|
||||
if (has_core_cap(CORE_CAP_SPLIT_LOCK) || has_core_cap(CORE_CAP_UC_LOCK)) {
|
||||
v = vcpu_get_guest_msr(vcpu, MSR_TEST_CTL);
|
||||
} else {
|
||||
vcpu_inject_gp(vcpu, 0U);
|
||||
@@ -959,7 +959,7 @@ int32_t wrmsr_vmexit_handler(struct acrn_vcpu *vcpu)
|
||||
/* If VM has MSR_TEST_CTL, ignore write operation
|
||||
* If don't have MSR_TEST_CTL, trigger #GP
|
||||
*/
|
||||
if (has_core_cap(1U << 5U)) {
|
||||
if (has_core_cap(CORE_CAP_SPLIT_LOCK) || has_core_cap(CORE_CAP_UC_LOCK)) {
|
||||
vcpu_set_guest_msr(vcpu, MSR_TEST_CTL, v);
|
||||
pr_warn("Ignore writting 0x%llx to MSR_TEST_CTL from VM%d", v, vcpu->vm->vm_id);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user