Changeset 107203 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Nov 30, 2024 1:59:26 AM (4 months ago)
- svn:sync-xref-src-repo-rev:
- 166207
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/TMAllVirtual.cpp
r107192 r107203 101 101 * Invalid GIP is fatal, though we have to allow no GIP in driverless mode (ring-3 only). 102 102 */ 103 #ifdef VBOX_WITH_R0_MODULES 103 104 PSUPGLOBALINFOPAGE pGip = g_pSUPGlobalInfoPage; 104 # ifdef IN_RING3105 # ifdef IN_RING3 105 106 if (pGip) 106 # endif107 # endif 107 108 { 108 109 AssertFatalMsg(RT_VALID_PTR(pGip), ("pVM=%p pGip=%p\n", pVM, pGip)); … … 114 115 * Determine the new worker. 115 116 */ 116 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)117 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) 117 118 bool const fLFence = RT_BOOL(ASMCpuId_EDX(1) & X86_CPUID_FEATURE_EDX_SSE2); 118 # endif119 # endif 119 120 switch (pGip->u32Mode) 120 121 { 121 122 case SUPGIPMODE_INVARIANT_TSC: 122 123 case SUPGIPMODE_SYNC_TSC: 123 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)124 # ifdef IN_RING0124 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) 125 # ifdef IN_RING0 125 126 if (pGip->enmUseTscDelta <= SUPGIPUSETSCDELTA_ROUGHLY_ZERO) 126 127 pfnWorker = fLFence ? RTTimeNanoTSLFenceSyncInvarNoDelta : RTTimeNanoTSLegacySyncInvarNoDelta; 127 128 else 128 129 pfnWorker = fLFence ? RTTimeNanoTSLFenceSyncInvarWithDelta : RTTimeNanoTSLegacySyncInvarWithDelta; 129 # else130 # else 130 131 if (pGip->fGetGipCpu & SUPGIPGETCPU_IDTR_LIMIT_MASK_MAX_SET_CPUS) 131 132 pfnWorker = pGip->enmUseTscDelta <= SUPGIPUSETSCDELTA_PRACTICALLY_ZERO … … 148 149 ? fLFence ? RTTimeNanoTSLFenceSyncInvarNoDelta : RTTimeNanoTSLegacySyncInvarNoDelta 149 150 : fLFence ? RTTimeNanoTSLFenceSyncInvarWithDeltaUseApicId : RTTimeNanoTSLegacySyncInvarWithDeltaUseApicId; 150 # endif151 # else /* !AMD64 && !X86 */151 # endif 152 # else /* !AMD64 && !X86 */ 152 153 if (pGip->enmUseTscDelta <= SUPGIPUSETSCDELTA_ROUGHLY_ZERO) 153 154 pfnWorker = RTTimeNanoTSSyncInvarNoDelta; 154 155 else 155 156 { 156 # ifdef IN_RING0157 # ifdef IN_RING0 157 158 pfnWorker = RTTimeNanoTSSyncInvarWithDelta; 158 # elif defined(RT_ARCH_ARM64)159 # elif defined(RT_ARCH_ARM64) 159 160 AssertFatal(pGip->fGetGipCpu & SUPGIPGETCPU_TPIDRRO_EL0); 160 161 pfnWorker = RTTimeNanoTSSyncInvarWithDeltaUseTpIdRRo; 161 # else162 # error "port me"163 # endif162 # else 163 # error "port me" 164 # endif 164 165 } 165 # endif /* !AMD64 && !X86 */166 # endif /* !AMD64 && !X86 */ 166 167 break; 167 168 168 169 case SUPGIPMODE_ASYNC_TSC: 169 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)170 # ifdef IN_RING0170 # if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) 171 # ifdef IN_RING0 171 172 pfnWorker = fLFence ? RTTimeNanoTSLFenceAsync : RTTimeNanoTSLegacyAsync; 172 # else173 # else 173 174 if (pGip->fGetGipCpu & SUPGIPGETCPU_IDTR_LIMIT_MASK_MAX_SET_CPUS) 174 175 pfnWorker = fLFence ? RTTimeNanoTSLFenceAsyncUseIdtrLim : RTTimeNanoTSLegacyAsyncUseIdtrLim; … … 183 184 else 184 185 pfnWorker = fLFence ? RTTimeNanoTSLFenceAsyncUseApicId : RTTimeNanoTSLegacyAsyncUseApicId; 185 # endif186 # else /* !AMD64 && !X86 */187 # ifdef IN_RING0186 # endif 187 # else /* !AMD64 && !X86 */ 188 # ifdef IN_RING0 188 189 pfnWorker = RTTimeNanoTSASync; 189 # elif defined(RT_ARCH_ARM64)190 # elif defined(RT_ARCH_ARM64) 190 191 AssertFatal(pGip->fGetGipCpu & SUPGIPGETCPU_TPIDRRO_EL0); 191 192 pfnWorker = RTTimeNanoTSSyncInvarWithDeltaUseTpIdRRo; 192 # else193 # error "port me"194 # endif195 # endif /* !AMD64 && !X86 */193 # else 194 # error "port me" 195 # endif 196 # endif /* !AMD64 && !X86 */ 196 197 break; 197 198 … … 200 201 } 201 202 } 203 # ifdef IN_RING3 204 else 205 # endif 206 #endif /* VBOX_WITH_R0_MODULES */ 202 207 #ifdef IN_RING3 203 else204 208 pfnWorker = tmR3VirtualNanoTSDriverless; 205 209 #endif
Note:
See TracChangeset
for help on using the changeset viewer.