Changeset 104512 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- May 3, 2024 3:08:25 PM (10 months ago)
- svn:sync-xref-src-repo-rev:
- 163035
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/VMM/VMMAll/VMXAllTemplate.cpp.h ¶
r104511 r104512 7548 7548 AssertRCReturn(rc, rc); 7549 7549 7550 VBOXSTRICTRC rcStrict = VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE;7551 7550 if (VCPU_2_VMXSTATE(pVCpu).fGCMTrapXcptDE) 7552 7551 { 7553 rcStrict = GCMXcptDE(pVCpu, &pVCpu->cpum.GstCtx); 7554 Assert(rcStrict == VINF_SUCCESS /* restart instr */ || rcStrict == VERR_NOT_FOUND /* deliver exception */); 7555 } 7556 /** @todo r=bird: This cannot be right! It'll suppress \#DE */ 7552 rc = GCMXcptDE(pVCpu, &pVCpu->cpum.GstCtx); 7553 Assert(rc == VINF_SUCCESS /* restart instr */ || rc == VERR_NOT_FOUND /* deliver exception */); 7554 } 7557 7555 else 7558 rc Strict = VINF_SUCCESS; /* Do nothing. */7556 rc = VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE; 7559 7557 7560 7558 /* If the GCM #DE exception handler didn't succeed or wasn't needed, raise #DE. */ 7561 if (RT_FAILURE(rcStrict)) 7562 { 7559 if (RT_FAILURE(rc)) 7563 7560 vmxHCSetPendingEvent(pVCpu, VMX_ENTRY_INT_INFO_FROM_EXIT_INT_INFO(pVmxTransient->uExitIntInfo), 7564 pVmxTransient->cbExitInstr, pVmxTransient->uExitIntErrorCode, 0 /* GCPtrFaultAddress */); 7565 rcStrict = VINF_SUCCESS; 7566 } 7567 7568 /** @todo r=bird: This assertion is wrong. rcStrict can never be 7569 * VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE here, it can only be 7570 * VINF_SUCCESS. */ 7571 Assert(rcStrict == VINF_SUCCESS || rcStrict == VERR_VMX_UNEXPECTED_INTERRUPTION_EXIT_TYPE); 7572 return VBOXSTRICTRC_VAL(rcStrict); 7561 pVmxTransient->cbExitInstr, pVmxTransient->uExitIntErrorCode, 0 /* GCPtrFaultAddress */); 7562 return VINF_SUCCESS; 7573 7563 } 7574 7564
Note:
See TracChangeset
for help on using the changeset viewer.