Changeset 81232 in vbox
- Timestamp:
- Oct 14, 2019 4:44:07 AM (5 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r81209 r81232 1009 1009 * @param uXcptMask The exception(s) to add. 1010 1010 */ 1011 static void hmR0VmxAddXcptInterceptMask(P VMXTRANSIENT pVmxTransient, uint32_t uXcptMask)1011 static void hmR0VmxAddXcptInterceptMask(PCVMXTRANSIENT pVmxTransient, uint32_t uXcptMask) 1012 1012 { 1013 1013 PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo; … … 1029 1029 * @param uXcpt The exception to add. 1030 1030 */ 1031 static void hmR0VmxAddXcptIntercept(P VMXTRANSIENT pVmxTransient, uint8_t uXcpt)1031 static void hmR0VmxAddXcptIntercept(PCVMXTRANSIENT pVmxTransient, uint8_t uXcpt) 1032 1032 { 1033 1033 Assert(uXcpt <= X86_XCPT_LAST); … … 1048 1048 * @param uXcptMask The exception(s) to remove. 1049 1049 */ 1050 static int hmR0VmxRemoveXcptInterceptMask(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, uint32_t uXcptMask)1050 static int hmR0VmxRemoveXcptInterceptMask(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint32_t uXcptMask) 1051 1051 { 1052 1052 PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo; … … 1110 1110 * @param uXcpt The exception to remove. 1111 1111 */ 1112 static int hmR0VmxRemoveXcptIntercept(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, uint8_t uXcpt)1112 static int hmR0VmxRemoveXcptIntercept(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint8_t uXcpt) 1113 1113 { 1114 1114 return hmR0VmxRemoveXcptInterceptMask(pVCpu, pVmxTransient, RT_BIT(uXcpt)); … … 2216 2216 * necessary. 2217 2217 */ 2218 static int hmR0VmxAddAutoLoadStoreMsr(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, uint32_t idMsr, uint64_t uGuestMsrValue,2218 static int hmR0VmxAddAutoLoadStoreMsr(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint32_t idMsr, uint64_t uGuestMsrValue, 2219 2219 bool fSetReadWrite, bool fUpdateHostMsr) 2220 2220 { … … 2306 2306 * @param idMsr The MSR. 2307 2307 */ 2308 static int hmR0VmxRemoveAutoLoadStoreMsr(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, uint32_t idMsr)2308 static int hmR0VmxRemoveAutoLoadStoreMsr(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint32_t idMsr) 2309 2309 { 2310 2310 PVMXVMCSINFO pVmcsInfo = pVmxTransient->pVmcsInfo; … … 4668 4668 * @remarks No-long-jump zone!!! 4669 4669 */ 4670 static int hmR0VmxExportGuestEntryExitCtls(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)4670 static int hmR0VmxExportGuestEntryExitCtls(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 4671 4671 { 4672 4672 if (ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged) & HM_CHANGED_VMX_ENTRY_EXIT_CTLS) … … 4854 4854 * @remarks No-long-jump zone!!! 4855 4855 */ 4856 static void hmR0VmxExportGuestApicTpr(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)4856 static void hmR0VmxExportGuestApicTpr(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 4857 4857 { 4858 4858 if (ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged) & HM_CHANGED_GUEST_APIC_TPR) … … 4914 4914 * @remarks No-long-jump zone!!! 4915 4915 */ 4916 static uint32_t hmR0VmxGetGuestIntrState(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)4916 static uint32_t hmR0VmxGetGuestIntrState(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 4917 4917 { 4918 4918 /* … … 4970 4970 * @remarks No-long-jump zone!!! 4971 4971 */ 4972 static void hmR0VmxExportGuestXcptIntercepts(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)4972 static void hmR0VmxExportGuestXcptIntercepts(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 4973 4973 { 4974 4974 if (ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged) & HM_CHANGED_VMX_XCPT_INTERCEPTS) … … 5039 5039 * @remarks No-long-jump zone!!! 5040 5040 */ 5041 static void hmR0VmxExportGuestRflags(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)5041 static void hmR0VmxExportGuestRflags(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 5042 5042 { 5043 5043 if (ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged) & HM_CHANGED_GUEST_RFLAGS) … … 5270 5270 * @remarks No-long-jump zone!!! 5271 5271 */ 5272 static int hmR0VmxExportGuestHwvirtState(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)5272 static int hmR0VmxExportGuestHwvirtState(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 5273 5273 { 5274 5274 if (ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged) & HM_CHANGED_GUEST_HWVIRT) … … 5334 5334 * @remarks No-long-jump zone!!! 5335 5335 */ 5336 static int hmR0VmxExportGuestCR0(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)5336 static int hmR0VmxExportGuestCR0(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 5337 5337 { 5338 5338 if (ASMAtomicUoReadU64(&pVCpu->hm.s.fCtxChanged) & HM_CHANGED_GUEST_CR0) … … 5510 5510 * @remarks No-long-jump zone!!! 5511 5511 */ 5512 static VBOXSTRICTRC hmR0VmxExportGuestCR3AndCR4(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)5512 static VBOXSTRICTRC hmR0VmxExportGuestCR3AndCR4(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 5513 5513 { 5514 5514 int rc = VINF_SUCCESS; … … 6145 6145 * @remarks No-long-jump zone!!! 6146 6146 */ 6147 static int hmR0VmxExportGuestSegRegsXdtr(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)6147 static int hmR0VmxExportGuestSegRegsXdtr(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 6148 6148 { 6149 6149 int rc = VERR_INTERNAL_ERROR_5; … … 6388 6388 * @remarks No-long-jump zone!!! 6389 6389 */ 6390 static int hmR0VmxExportGuestMsrs(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)6390 static int hmR0VmxExportGuestMsrs(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 6391 6391 { 6392 6392 AssertPtr(pVCpu); … … 6530 6530 * @remarks No-long-jump zone!!! 6531 6531 */ 6532 static int hmR0VmxSelectVMRunHandler(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient)6532 static int hmR0VmxSelectVMRunHandler(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient) 6533 6533 { 6534 6534 PCCPUMCTX pCtx = &pVCpu->cpum.GstCtx; … … 8346 8346 * VM-entry). 8347 8347 */ 8348 static VBOXSTRICTRC hmR0VmxInjectEventVmcs(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, PCHMEVENT pEvent, bool fStepping,8348 static VBOXSTRICTRC hmR0VmxInjectEventVmcs(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, PCHMEVENT pEvent, bool fStepping, 8349 8349 uint32_t *pfIntrState) 8350 8350 { … … 8581 8581 * @param pfIntrState Where to store the VT-x guest-interruptibility state. 8582 8582 */ 8583 static VBOXSTRICTRC hmR0VmxEvaluatePendingEvent(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, uint32_t *pfIntrState)8583 static VBOXSTRICTRC hmR0VmxEvaluatePendingEvent(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint32_t *pfIntrState) 8584 8584 { 8585 8585 Assert(pfIntrState); … … 8730 8730 * directly. 8731 8731 */ 8732 static VBOXSTRICTRC hmR0VmxInjectPendingEvent(PVMCPUCC pVCpu, P VMXTRANSIENT pVmxTransient, uint32_t fIntrState, bool fStepping)8732 static VBOXSTRICTRC hmR0VmxInjectPendingEvent(PVMCPUCC pVCpu, PCVMXTRANSIENT pVmxTransient, uint32_t fIntrState, bool fStepping) 8733 8733 { 8734 8734 HMVMX_ASSERT_PREEMPT_SAFE(pVCpu); … … 9038 9038 if ( pVCpu->CTX_SUFF(pVM)->hm.s.vmx.fUnrestrictedGuest 9039 9039 || !CPUMIsGuestInRealModeEx(&pVCpu->cpum.GstCtx)) 9040 pVmcsInfo->RealMode. fRealOnV86Active = false;9040 pVmcsInfo->RealMode.fRealOnV86Active = false; 9041 9041 else 9042 9042 { … … 9164 9164 9165 9165 /* 9166 * For many exits it's only RIP/RSP/RFLAGS that changes and hence try to export it first9167 * without going through a lot of changeflag checks.9166 * For many VM-exits only RIP/RSP/RFLAGS (and HWVIRT state when executing a nested-guest) 9167 * changes. First try to export only these without going through all other changed-flag checks. 9168 9168 */ 9169 9169 VBOXSTRICTRC rcStrict;
Note:
See TracChangeset
for help on using the changeset viewer.

