Changeset 78877 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 30, 2019 11:55:15 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 130990
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r78838 r78877 15929 15929 * @param pVCpu The cross context virtual CPU structure of the calling EMT. 15930 15930 * @param uExitReason The VM-exit reason. 15931 * @param uExitQual The VM-exit qualification. 15931 15932 * @thread EMT(pVCpu) 15932 * 15933 * @remarks It is the responsibility of the caller to ensure VM-exit qualification 15934 * is updated prior to calling this function! 15935 */ 15936 VMM_INT_DECL(VBOXSTRICTRC) IEMExecVmxVmexit(PVMCPU pVCpu, uint32_t uExitReason) 15937 { 15933 */ 15934 VMM_INT_DECL(VBOXSTRICTRC) IEMExecVmxVmexit(PVMCPU pVCpu, uint32_t uExitReason, uint64_t uExitQual) 15935 { 15936 iemVmxVmcsSetExitQual(pVCpu, uExitQual); 15938 15937 VBOXSTRICTRC rcStrict = iemVmxVmexit(pVCpu, uExitReason); 15939 15938 if (pVCpu->iem.s.cActiveMappings) -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r78874 r78877 446 446 static FNVMXEXITHANDLER hmR0VmxExitPauseNested; 447 447 //static FNVMXEXITHANDLERNSRC hmR0VmxExitTprBelowThreshold; 448 //static FNVMXEXITHANDLER hmR0VmxExitApicAccess;448 static FNVMXEXITHANDLER hmR0VmxExitApicAccessNested; 449 449 static FNVMXEXITHANDLER hmR0VmxExitXdtrAccessNested; 450 450 //static FNVMXEXITHANDLER hmR0VmxExitEptViolation; … … 15798 15798 15799 15799 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INT_WINDOW_EXIT)) 15800 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason );15800 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, 0 /* uExitQual */); 15801 15801 return hmR0VmxExitIntWindow(pVCpu, pVmxTransient); 15802 15802 } … … 15811 15811 15812 15812 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_NMI_WINDOW_EXIT)) 15813 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason );15813 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, 0 /* uExitQual */); 15814 15814 return hmR0VmxExitIntWindow(pVCpu, pVmxTransient); 15815 15815 } … … 16260 16260 16261 16261 /** @todo NSTVMX: Should consider debugging nested-guests using VM debugger. */ 16262 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason );16262 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, 0 /* uExitQual */); 16263 16263 } 16264 16264 … … 16301 16301 } 16302 16302 return hmR0VmxExitPause(pVCpu, pVmxTransient); 16303 } 16304 16305 16306 /** 16307 * Nested-guest VM-exit handler for APIC access (VMX_EXIT_APIC_ACCESS). Conditional 16308 * VM-exit. 16309 */ 16310 HMVMX_EXIT_DECL hmR0VmxExitApicAccessNested(PVMCPU pVCpu, PVMXTRANSIENT pVmxTransient) 16311 { 16312 HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 16313 16314 /* 16315 * All VMCS controls that cause APIC-access VM-exits (Virtualize APIC access, 16316 * virtual-interrupt delivery, APIC-register virtualization) are all taken 16317 * directly from the guest-hypervisor. So there should be no need to re-verify 16318 * them here. 16319 * 16320 * Only the VM-exit qualification is relevant here. 16321 */ 16322 int rc = hmR0VmxReadExitQualVmcs(pVCpu, pVmxTransient); 16323 AssertRCReturn(rc, rc); 16324 return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, pVmxTransient->uExitQual); 16303 16325 } 16304 16326 -
trunk/src/VBox/VMM/VMMR3/EM.cpp
r78237 r78877 1729 1729 && CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INT_WINDOW_EXIT)) 1730 1730 { 1731 VBOXSTRICTRC rcStrict = IEMExecVmxVmexit(pVCpu, VMX_EXIT_INT_WINDOW );1731 VBOXSTRICTRC rcStrict = IEMExecVmxVmexit(pVCpu, VMX_EXIT_INT_WINDOW, 0 /* uExitQual */); 1732 1732 if (RT_SUCCESS(rcStrict)) 1733 1733 { … … 2157 2157 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_MTF)) 2158 2158 { 2159 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_MTF ));2159 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_MTF, 0 /* uExitQual */)); 2160 2160 Assert(rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE); 2161 2161 UPDATE_RC(); … … 2179 2179 if (VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_NMI_WINDOW)) 2180 2180 { 2181 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_NMI_WINDOW ));2181 rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_NMI_WINDOW, 0 /* uExitQual */)); 2182 2182 Assert(rc2 != VINF_VMX_INTERCEPT_NOT_ACTIVE); 2183 2183 UPDATE_RC(); -
trunk/src/VBox/VMM/VMMR3/VMM.cpp
r78237 r78877 1647 1647 PCCPUMCTX pCtx = CPUMQueryGuestCtxPtr(pVCpu); 1648 1648 if (CPUMIsGuestInVmxNonRootMode(pCtx)) 1649 return VBOXSTRICTRC_TODO(IEMExecVmxVmexit(pVCpu, VMX_EXIT_INIT_SIGNAL ));1649 return VBOXSTRICTRC_TODO(IEMExecVmxVmexit(pVCpu, VMX_EXIT_INIT_SIGNAL, 0 /* uExitQual */)); 1650 1650 #endif 1651 1651
Note:
See TracChangeset
for help on using the changeset viewer.