Changeset 78438 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- May 7, 2019 3:57:37 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 130438
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/VMMAll.cpp
r76553 r78438 24 24 #include "VMMInternal.h" 25 25 #include <VBox/vmm/vm.h> 26 #ifdef IN_RING0 27 # include <VBox/vmm/gvm.h> 28 #endif 26 29 #include <VBox/vmm/hm.h> 27 30 #include <VBox/vmm/vmcpuset.h> … … 203 206 if (pVM->cCpus == 1) 204 207 return 0; 208 # ifdef VBOX_BUGREF_9217 209 PGVM pGVM = (PGVM)pVM; 210 VMCPUID const cCpus = pGVM->cCpusSafe; 211 # else 212 VMCPUID const cCpus = pVM->cCpus; 213 # endif 205 214 206 215 /* Search first by host cpu id (most common case) … … 215 224 216 225 /** @todo optimize for large number of VCPUs when that becomes more common. */ 217 for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)226 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 218 227 { 228 # ifdef VBOX_BUGREF_9217 229 PVMCPU pVCpu = &pGVM->aCpus[idCpu]; 230 # else 219 231 PVMCPU pVCpu = &pVM->aCpus[idCpu]; 232 # endif 220 233 221 234 if (pVCpu->idHostCpu == idHostCpu) … … 228 241 229 242 /** @todo optimize for large number of VCPUs when that becomes more common. */ 230 for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++) 231 { 243 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 244 { 245 # ifdef VBOX_BUGREF_9217 246 PVMCPU pVCpu = &pGVM->aCpus[idCpu]; 247 # else 232 248 PVMCPU pVCpu = &pVM->aCpus[idCpu]; 249 # endif 233 250 234 251 if (pVCpu->hNativeThreadR0 == hThread) … … 259 276 return NULL; 260 277 Assert(idCpu < pVM->cCpus); 278 # ifdef VBOX_BUGREF_9217 279 return pVM->apCpus[idCpu]; 280 # else 261 281 return &pVM->aCpus[idCpu]; 282 # endif 262 283 263 284 #elif defined(IN_RING0) 285 # ifdef VBOX_BUGREF_9217 286 PGVM pGVM = (PGVM)pVM; 287 VMCPUID const cCpus = pGVM->cCpusSafe; 288 # else 289 VMCPUID const cCpus = pVM->cCpus; 290 # endif 264 291 if (pVM->cCpus == 1) 292 # ifdef VBOX_BUGREF_9217 293 return &pGVM->aCpus[0]; 294 # else 265 295 return &pVM->aCpus[0]; 296 # endif 266 297 267 298 /* … … 277 308 278 309 /** @todo optimize for large number of VCPUs when that becomes more common. */ 279 for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)310 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 280 311 { 312 # ifdef VBOX_BUGREF_9217 313 PVMCPU pVCpu = &pGVM->aCpus[idCpu]; 314 # else 281 315 PVMCPU pVCpu = &pVM->aCpus[idCpu]; 282 316 # endif 283 317 if (pVCpu->idHostCpu == idHostCpu) 284 318 return pVCpu; … … 291 325 /** @todo optimize for large number of VCPUs when that becomes more common. 292 326 * Use a map like GIP does that's indexed by the host CPU index. */ 293 for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++) 294 { 327 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 328 { 329 # ifdef VBOX_BUGREF_9217 330 PVMCPU pVCpu = &pGVM->aCpus[idCpu]; 331 # else 295 332 PVMCPU pVCpu = &pVM->aCpus[idCpu]; 296 333 # endif 297 334 if (pVCpu->hNativeThreadR0 == hThread) 298 335 return pVCpu; … … 301 338 302 339 #else /* RC: Always EMT(0) */ 303 return &pVM->aCpus[0]; 340 RT_NOREF(pVM); 341 return &g_VCpu0; 304 342 #endif /* IN_RING0 */ 305 343 } … … 316 354 { 317 355 Assert(pVM->cCpus == 1); 356 #ifdef VBOX_BUGREF_9217 357 # ifdef IN_RING3 358 return pVM->apCpus[0]; 359 # elif defined(IN_RING0) 360 return &((PGVM)pVM)->aCpus[0]; 361 # else /* RC */ 362 RT_NOREF(pVM); 363 return &g_VCpu0; 364 # endif 365 #else 318 366 return &pVM->aCpus[0]; 367 #endif 319 368 } 320 369 … … 332 381 { 333 382 AssertReturn(idCpu < pVM->cCpus, NULL); 383 #ifdef VBOX_BUGREF_9217 384 # ifdef IN_RING3 385 return pVM->apCpus[idCpu]; 386 # elif defined(IN_RING0) 387 return &((PGVM)pVM)->aCpus[0]; 388 # else /* RC */ 389 RT_NOREF(pVM, idCpu); 390 Assert(idCpu == 0); 391 return &g_VCpu0; 392 # endif 393 #else 334 394 return &pVM->aCpus[idCpu]; 395 #endif 335 396 } 336 397
Note:
See TracChangeset
for help on using the changeset viewer.