- Timestamp:
- Jun 30, 2021 2:22:17 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 145442
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/dbgf.h
r89924 r89980 497 497 498 498 499 /** @name Misc VT-x and AMD-V execution events. 500 * @{ */ 501 DBGFEVENT_VMX_SPLIT_LOCK, /**< VT-x: Split-lock \#AC triggered by host having detection enabled. */ 502 /** @} */ 503 504 499 505 /** Access to an unassigned I/O port. 500 506 * @todo not yet implemented. */ -
trunk/src/VBox/Debugger/DBGCEmulateCodeView.cpp
r89896 r89980 680 680 { DBGFEVENT_EXIT_SVM_STGI, "exit_svm_stgi", NULL, kDbgcSxEventKind_Plain, kDbgcEvtState_Disabled, 0, NULL }, 681 681 { DBGFEVENT_EXIT_SVM_CLGI, "exit_svm_clgi", NULL, kDbgcSxEventKind_Plain, kDbgcEvtState_Disabled, 0, NULL }, 682 { DBGFEVENT_VMX_SPLIT_LOCK, "vmx_split_lock", NULL, kDbgcSxEventKind_Plain, kDbgcEvtState_Disabled, 0, NULL }, 682 683 { DBGFEVENT_IOPORT_UNASSIGNED, "pio_unassigned", NULL, kDbgcSxEventKind_Plain, kDbgcEvtState_Disabled, 0, NULL }, 683 684 { DBGFEVENT_IOPORT_UNUSED, "pio_unused", NULL, kDbgcSxEventKind_Plain, kDbgcEvtState_Disabled, 0, NULL }, -
trunk/src/VBox/VMM/VBoxVMM.d
r82968 r89980 361 361 362 362 363 /** @name Misc VT-x and AMD-V execution events. 364 * @{ */ 365 /** VT-x: Split-lock \#AC triggered by host having detection enabled. */ 366 probe vmx__split__lock(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx); 367 /** @} */ 368 369 363 370 /** @name IPRT tracepoints we link in. 364 371 * @{ */ -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r89976 r89980 14153 14153 || !(pVCpu->cpum.GstCtx.eflags.u & X86_EFL_AC) ) 14154 14154 { 14155 /* 14156 * Check for debug/trace events and import state accordingly. 14157 */ 14155 14158 STAM_REL_COUNTER_INC(&pVCpu->hm.s.StatExitGuestACSplitLock); 14156 #if 0 14157 rc = hmR0VmxImportGuestState(pVCpu, pVmxTransient->pVmcsInfo, IEM_CPUMCTX_EXTRN_MUST_MASK); 14159 PVM pVM = pVCpu->pVMR0; 14160 if ( !DBGF_IS_EVENT_ENABLED(pVM, DBGFEVENT_VMX_SPLIT_LOCK) 14161 && !VBOXVMM_VMX_SPLIT_LOCK_ENABLED()) 14162 { 14163 #if 0 /** @todo r=bird: This is potentially wrong. Might have to just do a whole state sync above and mark everything changed to be safe... */ 14164 rc = hmR0VmxImportGuestState(pVCpu, pVmxTransient->pVmcsInfo, IEM_CPUMCTX_EXTRN_MUST_MASK); 14158 14165 #else 14159 rc = hmR0VmxImportGuestState(pVCpu, pVmxTransient->pVmcsInfo, HMVMX_CPUMCTX_EXTRN_ALL);14166 rc = hmR0VmxImportGuestState(pVCpu, pVmxTransient->pVmcsInfo, HMVMX_CPUMCTX_EXTRN_ALL); 14160 14167 #endif 14161 AssertRCReturn(rc, rc); 14168 AssertRCReturn(rc, rc); 14169 } 14170 else 14171 { 14172 rc = hmR0VmxImportGuestState(pVCpu, pVmxTransient->pVmcsInfo, HMVMX_CPUMCTX_EXTRN_ALL); 14173 AssertRCReturn(rc, rc); 14174 14175 VBOXVMM_XCPT_DF(pVCpu, &pVCpu->cpum.GstCtx); 14176 14177 if (DBGF_IS_EVENT_ENABLED(pVM, DBGFEVENT_VMX_SPLIT_LOCK)) 14178 { 14179 VBOXSTRICTRC rcStrict = DBGFEventGenericWithArgs(pVM, pVCpu, DBGFEVENT_VMX_SPLIT_LOCK, DBGFEVENTCTX_HM, 0); 14180 if (rcStrict != VINF_SUCCESS) 14181 return rcStrict; 14182 } 14183 } 14184 14185 /* 14186 * Emulate the instruction. 14187 * 14188 * We have to ignore the LOCK prefix here as we must not retrigger the 14189 * detection on the host. This isn't all that satisfactory, though... 14190 */ 14162 14191 Log8Func(("cs:rip=%#04x:%#RX64 rflags=%#RX64 cr0=%#RX64 split-lock #AC?\n", pVCpu->cpum.GstCtx.cs.Sel, 14163 14192 pVCpu->cpum.GstCtx.rip, pVCpu->cpum.GstCtx.rflags, pVCpu->cpum.GstCtx.cr0)); … … 14166 14195 VBOXSTRICTRC rcStrict = IEMExecOneIgnoreLock(pVCpu); 14167 14196 if (rcStrict == VINF_SUCCESS) 14168 #if 0 /** @todo r=bird: This is potentially wrong. Might have to just do a whole 14169 * state sync above and mark everything changed to be safe... */ 14197 #if 0 /** @todo r=bird: This is potentially wrong. Might have to just do a whole state sync above and mark everything changed to be safe... */ 14170 14198 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, 14171 14199 HM_CHANGED_GUEST_RIP … … 14175 14203 | HM_CHANGED_GUEST_SS); 14176 14204 #else 14177 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_ALL_GUEST);14205 ASMAtomicUoOrU64(&pVCpu->hm.s.fCtxChanged, HM_CHANGED_ALL_GUEST); 14178 14206 #endif 14179 14207 else if (rcStrict == VINF_IEM_RAISED_XCPT) … … 14182 14210 rcStrict = VINF_SUCCESS; 14183 14211 } 14184 return VBOXSTRICTRC_VAL(rcStrict);14212 return rcStrict; 14185 14213 } 14186 14214
Note:
See TracChangeset
for help on using the changeset viewer.