Changeset 79802 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jul 16, 2019 6:04:03 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r79785 r79802 10821 10821 * The virtual-APIC page has already been allocated (by CPUM during VM startup) and cached 10822 10822 * from guest memory as part of VMLAUNCH/VMRESUME instruction emulation. The host physical 10823 * address has also been updated in the nested-guest VMCS .10823 * address has also been updated in the nested-guest VMCS object during allocation. 10824 10824 */ 10825 10825 PVMXVMCSINFO pVmcsInfoNstGst = &pVCpu->hm.s.vmx.VmcsInfoNstGst; … … 10828 10828 if (u32ProcCtls & VMX_PROC_CTLS_USE_TPR_SHADOW) 10829 10829 { 10830 Assert(pVM->hm.s.vmx.Msrs.ProcCtls.n.allowed1 & VMX_PROC_CTLS_USE_TPR_SHADOW); 10830 10831 HCPhysVirtApic = pVmcsInfoNstGst->HCPhysVirtApic; 10831 10832 u32TprThreshold = pVmcsNstGst->u32TprThreshold; … … 10882 10883 rc |= VMXWriteVmcs32(VMX_VMCS32_CTRL_PLE_WINDOW, cPleWindowTicks); 10883 10884 } 10884 rc |= VMXWriteVmcs32(VMX_VMCS32_CTRL_TPR_THRESHOLD, u32TprThreshold); 10885 rc |= VMXWriteVmcs64(VMX_VMCS64_CTRL_VIRT_APIC_PAGEADDR_FULL, pVmcsInfoNstGst->HCPhysVirtApic); 10885 if (u32ProcCtls & VMX_PROC_CTLS_USE_TPR_SHADOW) 10886 { 10887 rc |= VMXWriteVmcs32(VMX_VMCS32_CTRL_TPR_THRESHOLD, u32TprThreshold); 10888 rc |= VMXWriteVmcs64(VMX_VMCS64_CTRL_VIRT_APIC_PAGEADDR_FULL, pVmcsInfoNstGst->HCPhysVirtApic); 10889 } 10886 10890 AssertRCReturn(rc, rc); 10887 10891 … … 14696 14700 } 14697 14701 } 14702 /* else: inject pending event before resuming guest execution. */ 14698 14703 } 14699 14704 else if (rcStrict == VINF_HM_DOUBLE_FAULT) … … 17509 17514 HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 17510 17515 17511 int rc = hmR0VmxReadExitIntInfoVmcs(pVmxTransient); 17512 rc |= hmR0VmxReadExitIntErrorCodeVmcs(pVmxTransient); 17513 rc |= hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 17516 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 17514 17517 rc |= hmR0VmxReadIdtVectoringInfoVmcs(pVmxTransient); 17515 17518 rc |= hmR0VmxReadIdtVectoringErrorCodeVmcs(pVmxTransient);
Note:
See TracChangeset
for help on using the changeset viewer.