- Timestamp:
- Feb 13, 2021 1:57:20 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
include/VBox/vmm/tm.h (modified) (1 diff)
-
src/VBox/VMM/VMMAll/TMAll.cpp (modified) (2 diffs)
-
src/VBox/VMM/VMMR0/HMSVMR0.cpp (modified) (1 diff)
-
src/VBox/VMM/VMMR0/HMVMXR0.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/tm.h
r87747 r87751 86 86 87 87 VMMDECL(void) TMNotifyStartOfExecution(PVMCC pVM, PVMCPUCC pVCpu); 88 VMMDECL(void) TMNotifyEndOfExecution(PVMCC pVM, PVMCPUCC pVCpu );88 VMMDECL(void) TMNotifyEndOfExecution(PVMCC pVM, PVMCPUCC pVCpu, uint64_t uTsc); 89 89 VMM_INT_DECL(void) TMNotifyStartOfHalt(PVMCPUCC pVCpu); 90 90 VMM_INT_DECL(void) TMNotifyEndOfHalt(PVMCPUCC pVCpu); -
trunk/src/VBox/VMM/VMMAll/TMAll.cpp
r87750 r87751 177 177 * @param pVM The cross context VM structure. 178 178 * @param pVCpu The cross context virtual CPU structure. 179 */ 180 VMMDECL(void) TMNotifyEndOfExecution(PVMCC pVM, PVMCPUCC pVCpu) 179 * @param uTsc TSC value when exiting guest context. 180 */ 181 VMMDECL(void) TMNotifyEndOfExecution(PVMCC pVM, PVMCPUCC pVCpu, uint64_t uTsc) 181 182 { 182 183 if (pVM->tm.s.fTSCTiedToExecution) 183 tmCpuTickPause(pVCpu); 184 tmCpuTickPause(pVCpu); /** @todo use uTsc here if we can. */ 184 185 185 186 #ifndef VBOX_WITHOUT_NS_ACCOUNTING … … 187 188 * Calculate the elapsed tick count and convert it to nanoseconds. 188 189 */ 189 /** @todo get TSC from caller (HMR0A.asm) */190 uint64_t cTicks = SUPReadTsc() - pVCpu->tm.s.uTscStartExecuting;191 190 # ifdef IN_RING3 191 uint64_t cTicks = uTsc - pVCpu->tm.s.uTscStartExecuting - SUPGetTscDelta(); 192 192 uint64_t const uCpuHz = SUPGetCpuHzFromGip(g_pSUPGlobalInfoPage); 193 193 # else 194 uint64_t cTicks = uTsc - pVCpu->tm.s.uTscStartExecuting - SUPGetTscDeltaByCpuSetIndex(pVCpu->iHostCpuSet); 194 195 uint64_t const uCpuHz = SUPGetCpuHzFromGipBySetIndex(g_pSUPGlobalInfoPage, pVCpu->iHostCpuSet); 195 196 # endif -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r87606 r87751 4382 4382 STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatInGC, &pVCpu->hm.s.StatPreExit, x); 4383 4383 PVMCC pVM = pVCpu->CTX_SUFF(pVM); 4384 TMNotifyEndOfExecution(pVM, pVCpu );/* Notify TM that the guest is no longer running. */4384 TMNotifyEndOfExecution(pVM, pVCpu, uHostTsc); /* Notify TM that the guest is no longer running. */ 4385 4385 VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED_HM); 4386 4386 -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r87690 r87751 11177 11177 11178 11178 STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatInGC, &pVCpu->hm.s.StatPreExit, x); 11179 TMNotifyEndOfExecution(pVCpu->CTX_SUFF(pVM), pVCpu );/* Notify TM that the guest is no longer running. */11179 TMNotifyEndOfExecution(pVCpu->CTX_SUFF(pVM), pVCpu, uHostTsc); /* Notify TM that the guest is no longer running. */ 11180 11180 VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED_HM); 11181 11181
Note:
See TracChangeset
for help on using the changeset viewer.

