Changeset 96962 in vbox for trunk/src/VBox
- Timestamp:
- Oct 2, 2022 9:54:28 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 153881
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h
r96927 r96962 3046 3046 */ 3047 3047 DECLINLINE(void) vmxHCSetPendingEvent(PVMCPUCC pVCpu, uint32_t u32IntInfo, uint32_t cbInstr, uint32_t u32ErrCode, 3048 3048 RTGCUINTPTR GCPtrFaultAddress) 3049 3049 { 3050 3050 Assert(!VCPU_2_VMXSTATE(pVCpu).Event.fPending); … … 3906 3906 STAM_COUNTER_INC(&VCPU_2_VMXSTATS(pVCpu).StatSwitchHmToR3FF); 3907 3907 int rc = RT_LIKELY(!VM_FF_IS_SET(pVM, VM_FF_PGM_NO_MEMORY)) ? VINF_EM_RAW_TO_R3 : VINF_EM_NO_MEMORY; 3908 Log4Func(("HM_TO_R3 forcing us back to ring-3. rc=%d\n", rc)); 3908 Log4Func(("HM_TO_R3 forcing us back to ring-3. rc=%d (fVM=%#RX64 fCpu=%#RX64)\n", 3909 rc, pVM->fGlobalForcedActions, pVCpu->fLocalForcedActions)); 3909 3910 return rc; 3910 3911 } … … 10217 10218 HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 10218 10219 10219 # ifdef VBOX_STRICT10220 # ifdef VBOX_STRICT 10220 10221 PCCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 10221 10222 switch (pVmxTransient->uExitReason) … … 10250 10251 break; 10251 10252 } 10252 # endif10253 # endif 10253 10254 10254 10255 vmxHCReadExitInstrLenVmcs(pVCpu, pVmxTransient); … … 10265 10266 } 10266 10267 10267 10268 10268 # ifdef VBOX_WITH_NESTED_HWVIRT_VMX_EPT 10269 10269 10270 /** 10270 10271 * Nested-guest VM-exit handler for EPT violation (VMX_EXIT_EPT_VIOLATION). … … 10309 10310 GCPhysNestedFault, fIsLinearAddrValid, GCPtrNestedFault, 10310 10311 &Walk); 10312 Log7Func(("PGM (uExitQual=%#RX64, %RGp, %RGv) -> %Rrc (fFailed=%d)\n", 10313 uExitQual, GCPhysNestedFault, GCPtrNestedFault, VBOXSTRICTRC_VAL(rcStrict), Walk.fFailed)); 10311 10314 if (RT_SUCCESS(rcStrict)) 10315 { 10316 #if 1 10317 /* 10318 * If it's our VMEXIT, we're responsible for re-injecting any event which delivery 10319 * might have triggered this VMEXIT. If we forward the problem to the inner VMM, 10320 * it's its problem to deal with that issue. This means that it's troublesome to 10321 * call vmxHCCheckExitDueToEventDelivery before PGMR0NestedTrap0eHandlerNestedPaging 10322 * have decided who's VMEXIT it is. Unfortunately, we're a bit of a pickle then if 10323 * we end up with an informational status here, as we _must_ _not_ drop events either. 10324 */ 10325 /** @todo need better solution for this. Better solution should probably be 10326 * applied to other exits too... */ 10327 if (rcStrict == VINF_SUCCESS) 10328 { 10329 vmxHCReadExitIntInfoVmcs(pVCpu, pVmxTransient); 10330 vmxHCReadExitIntErrorCodeVmcs(pVCpu, pVmxTransient); 10331 vmxHCReadExitInstrLenVmcs(pVCpu, pVmxTransient); 10332 vmxHCReadIdtVectoringInfoVmcs(pVCpu, pVmxTransient); 10333 vmxHCReadIdtVectoringErrorCodeVmcs(pVCpu, pVmxTransient); 10334 10335 vmxHCCheckExitDueToEventDelivery(pVCpu, pVmxTransient); 10336 } 10337 #endif 10312 10338 return rcStrict; 10339 } 10313 10340 10314 10341 vmxHCReadExitInstrLenVmcs(pVCpu, pVmxTransient); … … 10384 10411 return vmxHCExitEptMisconfig(pVCpu, pVmxTransient); 10385 10412 } 10413 10386 10414 # endif /* VBOX_WITH_NESTED_HWVIRT_VMX_EPT */ 10387 10415
Note:
See TracChangeset
for help on using the changeset viewer.