hv: vMSR: minor fix about rdmsr_vmexit_handler

Specifying a reserved or unimplemented MSR address in ECX for rdmsr will cause a
general protection exception. In this case, we should not change the contents of
registers EDX:EAX.

Tracked-On: #4550
Signed-off-by: Fei Li <fei1.li@intel.com>
This commit is contained in:
Fei Li 2021-10-25 14:41:24 +08:00 committed by wenlingz
parent 5d6f4b3813
commit 1905ed6124
1 changed files with 5 additions and 3 deletions

View File

@ -713,9 +713,11 @@ int32_t rdmsr_vmexit_handler(struct acrn_vcpu *vcpu)
} }
} }
/* Store the MSR contents in RAX and RDX */ if (err == 0) {
vcpu_set_gpreg(vcpu, CPU_REG_RAX, v & 0xffffffffU); /* Store the MSR contents in RAX and RDX */
vcpu_set_gpreg(vcpu, CPU_REG_RDX, v >> 32U); vcpu_set_gpreg(vcpu, CPU_REG_RAX, v & 0xffffffffU);
vcpu_set_gpreg(vcpu, CPU_REG_RDX, v >> 32U);
}
TRACE_2L(TRACE_VMEXIT_RDMSR, msr, v); TRACE_2L(TRACE_VMEXIT_RDMSR, msr, v);