Changeset 78493 in vbox for trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
- Timestamp:
- May 14, 2019 5:46:35 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r78492 r78493 12596 12596 case VMX_EXIT_TASK_SWITCH: 12597 12597 case VMX_EXIT_PREEMPT_TIMER: 12598 12598 12599 case VMX_EXIT_RDMSR: 12600 { 12601 uint32_t fMsrpm; 12602 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_MSR_BITMAPS)) 12603 fMsrpm = CPUMGetVmxMsrPermission(pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvMsrBitmap), pVCpu->cpum.GstCtx.ecx); 12604 else 12605 fMsrpm = VMXMSRPM_EXIT_RD; 12606 12607 if (fMsrpm & VMXMSRPM_EXIT_RD) 12608 { 12609 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 12610 AssertRCReturn(rc, rc); 12611 rcStrict = IEMExecVmxVmexitInstr(pVCpu, uExitReason, pVmxTransient->cbInstr); 12612 } 12613 else 12614 rcStrict = hmR0VmxExitRdmsr(pVCpu, pVmxTransient); 12615 break; 12616 } 12617 12599 12618 case VMX_EXIT_WRMSR: 12619 { 12620 uint32_t fMsrpm; 12621 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_MSR_BITMAPS)) 12622 fMsrpm = CPUMGetVmxMsrPermission(pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvMsrBitmap), pVCpu->cpum.GstCtx.ecx); 12623 else 12624 fMsrpm = VMXMSRPM_EXIT_WR; 12625 12626 if (fMsrpm & VMXMSRPM_EXIT_WR) 12627 { 12628 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 12629 AssertRCReturn(rc, rc); 12630 rcStrict = IEMExecVmxVmexitInstr(pVCpu, uExitReason, pVmxTransient->cbInstr); 12631 } 12632 else 12633 rcStrict = hmR0VmxExitWrmsr(pVCpu, pVmxTransient); 12634 break; 12635 } 12636 12600 12637 case VMX_EXIT_VMCALL: 12601 12638 case VMX_EXIT_MOV_DRX:
Note:
See TracChangeset
for help on using the changeset viewer.