Changeset 90897 in vbox
- Timestamp:
- Aug 25, 2021 8:00:41 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/VBox/vmm/vmm.h (modified) (1 diff)
-
src/VBox/VMM/VMMR0/GVMMR0.cpp (modified) (2 diffs)
-
src/VBox/VMM/VMMR0/VMMR0.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/vmm.h
r90829 r90897 521 521 VMMR0DECL(int) VMMR0EntryEx(PGVM pGVM, PVMCC pVM, VMCPUID idCpu, VMMR0OPERATION enmOperation, 522 522 PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION); 523 VMMR0_INT_DECL( void)VMMR0InitPerVMData(PGVM pGVM);523 VMMR0_INT_DECL(int) VMMR0InitPerVMData(PGVM pGVM); 524 524 VMMR0_INT_DECL(int) VMMR0TermVM(PGVM pGVM, VMCPUID idCpu); 525 525 VMMR0_INT_DECL(void) VMMR0CleanupVM(PGVM pGVM); -
trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp
r90829 r90897 910 910 rc = GMMR0InitPerVMData(pGVM); 911 911 int rc2 = PGMR0InitPerVMData(pGVM); 912 VMMR0InitPerVMData(pGVM);912 int rc3 = VMMR0InitPerVMData(pGVM); 913 913 DBGFR0InitPerVMData(pGVM); 914 914 PDMR0InitPerVMData(pGVM); 915 915 IOMR0InitPerVMData(pGVM); 916 916 TMR0InitPerVMData(pGVM); 917 if (RT_SUCCESS(rc) && RT_SUCCESS(rc2) )917 if (RT_SUCCESS(rc) && RT_SUCCESS(rc2) && RT_SUCCESS(rc3)) 918 918 { 919 919 /* … … 1039 1039 } 1040 1040 } 1041 else if (RT_SUCCESS(rc)) 1042 rc = rc2; 1041 else 1042 { 1043 if (RT_SUCCESS_NP(rc)) 1044 rc = rc2; 1045 if (RT_SUCCESS_NP(rc)) 1046 rc = rc3; 1047 } 1043 1048 } 1044 1049 } -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r90862 r90897 364 364 365 365 /** 366 * Initializes VMM specific members when the GVM structure is created.367 *368 * @param pGVM The global (ring-0) VM structure.369 */370 VMMR0_INT_DECL(void) VMMR0InitPerVMData(PGVM pGVM)371 {372 pGVM->vmmr0.s.hMemObjLogger = NIL_RTR0MEMOBJ;373 pGVM->vmmr0.s.hMapObjLogger = NIL_RTR0MEMOBJ;374 pGVM->vmmr0.s.hMemObjReleaseLogger = NIL_RTR0MEMOBJ;375 pGVM->vmmr0.s.hMapObjReleaseLogger = NIL_RTR0MEMOBJ;376 pGVM->vmmr0.s.fCalledInitVm = false;377 378 for (VMCPUID idCpu = 0; idCpu < pGVM->cCpus; idCpu++)379 {380 PGVMCPU pGVCpu = &pGVM->aCpus[idCpu];381 Assert(pGVCpu->idHostCpu == NIL_RTCPUID);382 Assert(pGVCpu->iHostCpuSet == UINT32_MAX);383 pGVCpu->vmmr0.s.fInHmContext = false;384 pGVCpu->vmmr0.s.pPreemptState = NULL;385 pGVCpu->vmmr0.s.hCtxHook = NIL_RTTHREADCTXHOOK;386 }387 }388 389 390 /**391 366 * Helper for vmmR0InitLoggers 392 367 */ 393 368 static int vmmR0InitLoggerOne(PGVMCPU pGVCpu, bool fRelease, PVMMR0PERVCPULOGGER pR0Log, PVMMR3CPULOGGER pShared, 394 uint32_t cbBuf, char *pchBuf, RTR3PTR pchBufR3 , uint64_t nsProgramStart)369 uint32_t cbBuf, char *pchBuf, RTR3PTR pchBufR3) 395 370 { 396 371 pR0Log->BufDesc.u32Magic = RTLOGBUFFERDESC_MAGIC; … … 426 401 { 427 402 RTLogSetR0ThreadNameF(pLogger, "EMT-%u-R0", pGVCpu->idCpu); 428 RTLogSetR0ProgramStart(pLogger, nsProgramStart);429 403 return VINF_SUCCESS; 430 404 } … … 461 435 PVMMR0PERVCPULOGGER pR0Log = fRelease ? &pGVCpu->vmmr0.s.RelLogger : &pGVCpu->vmmr0.s.Logger; 462 436 PVMMR3CPULOGGER pShared = fRelease ? &pGVCpu->vmm.s.RelLogger : &pGVCpu->vmm.s.Logger; 463 rc = vmmR0InitLoggerOne(pGVCpu, fRelease, pR0Log, pShared, cbBuf, pchBuf + i * cbBuf, pchBufR3 + i * cbBuf, 464 pGVM->vmm.s.nsProgramStart); 437 rc = vmmR0InitLoggerOne(pGVCpu, fRelease, pR0Log, pShared, cbBuf, pchBuf + i * cbBuf, pchBufR3 + i * cbBuf); 465 438 if (RT_FAILURE(rc)) 466 439 { … … 494 467 495 468 /** 469 * Initializes VMM specific members when the GVM structure is created, 470 * allocating loggers and stuff. 471 * 472 * The loggers are allocated here so that we can update their settings before 473 * doing VMMR0_DO_VMMR0_INIT and have correct logging at that time. 474 * 475 * @returns VBox status code. 476 * @param pGVM The global (ring-0) VM structure. 477 */ 478 VMMR0_INT_DECL(int) VMMR0InitPerVMData(PGVM pGVM) 479 { 480 /* 481 * Initialize all members first. 482 */ 483 pGVM->vmmr0.s.hMemObjLogger = NIL_RTR0MEMOBJ; 484 pGVM->vmmr0.s.hMapObjLogger = NIL_RTR0MEMOBJ; 485 pGVM->vmmr0.s.hMemObjReleaseLogger = NIL_RTR0MEMOBJ; 486 pGVM->vmmr0.s.hMapObjReleaseLogger = NIL_RTR0MEMOBJ; 487 pGVM->vmmr0.s.fCalledInitVm = false; 488 489 for (VMCPUID idCpu = 0; idCpu < pGVM->cCpus; idCpu++) 490 { 491 PGVMCPU pGVCpu = &pGVM->aCpus[idCpu]; 492 Assert(pGVCpu->idHostCpu == NIL_RTCPUID); 493 Assert(pGVCpu->iHostCpuSet == UINT32_MAX); 494 pGVCpu->vmmr0.s.fInHmContext = false; 495 pGVCpu->vmmr0.s.pPreemptState = NULL; 496 pGVCpu->vmmr0.s.hCtxHook = NIL_RTTHREADCTXHOOK; 497 } 498 499 /* 500 * Create the ring-0 release loggers. 501 */ 502 int rc = vmmR0InitLoggers(pGVM, true /*fRelease*/, _8K, 503 &pGVM->vmmr0.s.hMemObjReleaseLogger, &pGVM->vmmr0.s.hMapObjReleaseLogger); 504 505 #ifdef LOG_ENABLED 506 /* 507 * Create debug loggers. 508 */ 509 if (RT_SUCCESS(rc)) 510 rc = vmmR0InitLoggers(pGVM, false /*fRelease*/, _64K, &pGVM->vmmr0.s.hMemObjLogger, &pGVM->vmmr0.s.hMapObjLogger); 511 #endif 512 513 return rc; 514 } 515 516 517 /** 496 518 * Initiates the R0 driver for a particular VM instance. 497 519 * … … 534 556 return VERR_ALREADY_INITIALIZED; 535 557 536 /*537 * Create the ring-0 release loggers.538 */539 rc = vmmR0InitLoggers(pGVM, true /*fRelease*/, _8K, &pGVM->vmmr0.s.hMemObjReleaseLogger, &pGVM->vmmr0.s.hMapObjReleaseLogger);540 if (RT_FAILURE(rc))541 return rc;542 543 558 #ifdef LOG_ENABLED 544 /*545 * Create debug loggers.546 */547 rc = vmmR0InitLoggers(pGVM, false /*fRelease*/, _64K, &pGVM->vmmr0.s.hMemObjLogger, &pGVM->vmmr0.s.hMapObjLogger);548 if (RT_FAILURE(rc))549 return rc;550 559 551 560 /* … … 2917 2926 PRTLOGGER pLogger = fRelease ? pGVCpu->vmmr0.s.RelLogger.pLogger : pGVCpu->vmmr0.s.Logger.pLogger; 2918 2927 if (pLogger) 2928 { 2929 RTLogSetR0ProgramStart(pLogger, pGVM->vmm.s.nsProgramStart); 2919 2930 rc = RTLogBulkUpdate(pLogger, pReq->fFlags, pReq->uGroupCrc32, pReq->cGroups, pReq->afGroups); 2931 } 2920 2932 } 2921 2933
Note:
See TracChangeset
for help on using the changeset viewer.

