Lines Matching defs:pVM

112     PVM                 pVM;
305 static int gvmmR0ByVM(PVM pVM, PGVM *ppGVM, PGVMM *ppGVMM, bool fTakeUsedLock);
306 static int gvmmR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM, PGVMM *ppGVMM);
716 PVM pVM;
719 int rc = GVMMR0CreateVM(pReq->pSession, pReq->cCpus, &pVM);
722 pReq->pVMR0 = pVM;
723 pReq->pVMR3 = pVM->pVMR3;
774 if ( !pHandle->pVM
793 pHandle->pVM = NULL;
812 pGVM->pVM = NULL;
826 PVM pVM = (PVM)RTR0MemObjAddress(pGVM->gvmm.s.VMMemObj); AssertPtr(pVM);
827 memset(pVM, 0, cPages << PAGE_SHIFT);
828 pVM->enmVMState = VMSTATE_CREATING;
829 pVM->pVMR0 = pVM;
830 pVM->pSession = pSession;
831 pVM->hSelf = iHandle;
832 pVM->cbSelf = cbVM;
833 pVM->cCpus = cCpus;
834 pVM->uCpuExecutionCap = 100; /* default is no cap. */
835 pVM->offVMCPU = RT_UOFFSETOF(VM, aCpus);
858 pVM->pVMR3 = RTR0MemObjAddressR3(pGVM->gvmm.s.VMMapObj);
859 AssertPtr((void *)pVM->pVMR3);
864 pVM->aCpus[i].pVMR0 = pVM;
865 pVM->aCpus[i].pVMR3 = pVM->pVMR3;
866 pVM->aCpus[i].idHostCpu = NIL_RTCPUID;
867 pVM->aCpus[i].hNativeThreadR0 = NIL_RTNATIVETHREAD;
875 pVM->paVMPagesR3 = RTR0MemObjAddressR3(pGVM->gvmm.s.VMPagesMapObj);
876 AssertPtr((void *)pVM->paVMPagesR3);
882 pHandle->pVM = pVM;
886 pGVM->pVM = pVM;
888 pVM->aCpus[0].hNativeThreadR0 = hEMT0;
891 rc = VMMR0ThreadCtxHooksCreate(&pVM->aCpus[0]);
894 VBOXVMM_R0_GVMM_VM_CREATED(pGVM, pVM, ProcId, (void *)hEMT0, cCpus);
899 *ppVM = pVM;
900 Log(("GVMMR0CreateVM: pVM=%p pVMR3=%p pGVM=%p hGVM=%d\n", pVM, pVM->pVMR3, pGVM, iHandle));
973 * @param pVM Pointer to the VM.
975 GVMMR0DECL(int) GVMMR0InitVM(PVM pVM)
977 LogFlow(("GVMMR0InitVM: pVM=%p\n", pVM));
984 int rc = gvmmR0ByVMAndEMT(pVM, 0 /* idCpu */, &pGVM, &pGVMM);
1013 * @param pVM Pointer to the VM.
1016 GVMMR0DECL(void) GVMMR0DoneInitVM(PVM pVM)
1021 int rc = gvmmR0ByVMAndEMT(pVM, 0 /* idCpu */, &pGVM, &pGVMM);
1033 * @param pVM Pointer to the VM.
1037 GVMMR0DECL(bool) GVMMR0DoingTermVM(PVM pVM, PGVM pGVM)
1045 int rc = gvmmR0ByVMAndEMT(pVM, 0 /* idCpu */, &pGVM, &pGVMM);
1066 * @param pVM Pointer to the VM.
1070 GVMMR0DECL(int) GVMMR0DestroyVM(PVM pVM)
1072 LogFlow(("GVMMR0DestroyVM: pVM=%p\n", pVM));
1079 AssertPtrReturn(pVM, VERR_INVALID_POINTER);
1080 AssertReturn(!((uintptr_t)pVM & PAGE_OFFSET_MASK), VERR_INVALID_POINTER);
1081 AssertMsgReturn(pVM->enmVMState >= VMSTATE_CREATING && pVM->enmVMState <= VMSTATE_TERMINATED, ("%d\n", pVM->enmVMState),
1084 uint32_t hGVM = pVM->hSelf;
1089 AssertReturn(pHandle->pVM == pVM, VERR_NOT_OWNER);
1106 if ( pHandle->pVM == pVM
1119 for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)
1125 VMMR0ThreadCtxHooksRelease(&pVM->aCpus[idCpu]);
1132 SUPR0Printf("GVMMR0DestroyVM: pHandle=%p:{.pVM=%p, .hEMT0=%p, .ProcId=%u, .pvObj=%p} pVM=%p hSelf=%p\n",
1133 pHandle, pHandle->pVM, pHandle->hEMT0, pHandle->ProcId, pHandle->pvObj, pVM, hSelf);
1153 && RTR0MemObjAddress(pGVM->gvmm.s.VMMemObj) == pGVM->pVM)
1156 VMMR0TermVM(pGVM->pVM, pGVM);
1159 AssertMsgFailed(("gvmmR0CleanupVM: VMMemObj=%p pVM=%p\n", pGVM->gvmm.s.VMMemObj, pGVM->pVM));
1312 ASMAtomicWriteNullPtr(&pHandle->pVM);
1330 * @param pVM Pointer to the VM.
1333 GVMMR0DECL(int) GVMMR0RegisterVCpu(PVM pVM, VMCPUID idCpu)
1342 int rc = gvmmR0ByVM(pVM, &pGVM, &pGVMM, false /* fTakeUsedLock */);
1348 Assert(pGVM->cCpus == pVM->cCpus);
1349 Assert(pVM->aCpus[idCpu].hNativeThreadR0 == NIL_RTNATIVETHREAD);
1351 pVM->aCpus[idCpu].hNativeThreadR0 = pGVM->aCpus[idCpu].hEMT = RTThreadNativeSelf();
1353 rc = VMMR0ThreadCtxHooksCreate(&pVM->aCpus[idCpu]);
1379 AssertPtrReturn(pHandle->pVM, NULL);
1383 AssertReturn(pGVM->pVM == pHandle->pVM, NULL);
1396 * @param pVM Pointer to the VM.
1403 * @remark This will not assert on an invalid pVM but try return silently.
1405 static int gvmmR0ByVM(PVM pVM, PGVM *ppGVM, PGVMM *ppGVMM, bool fTakeUsedLock)
1414 if (RT_UNLIKELY( !VALID_PTR(pVM)
1415 || ((uintptr_t)pVM & PAGE_OFFSET_MASK)))
1417 if (RT_UNLIKELY( pVM->enmVMState < VMSTATE_CREATING
1418 || pVM->enmVMState >= VMSTATE_TERMINATED))
1421 uint16_t hGVM = pVM->hSelf;
1437 if (RT_UNLIKELY( pHandle->pVM != pVM
1441 || pGVM->pVM != pVM))
1449 if (RT_UNLIKELY(pHandle->pVM != pVM))
1459 if (RT_UNLIKELY(pGVM->pVM != pVM))
1473 * @param pVM Pointer to the VM.
1479 GVMMR0DECL(int) GVMMR0ByVM(PVM pVM, PGVM *ppGVM)
1482 return gvmmR0ByVM(pVM, ppGVM, &pGVMM, false /* fTakeUsedLock */);
1491 * @param pVM Pointer to the VM.
1499 static int gvmmR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM, PGVMM *ppGVMM)
1507 AssertPtrReturn(pVM, VERR_INVALID_POINTER);
1508 AssertReturn(!((uintptr_t)pVM & PAGE_OFFSET_MASK), VERR_INVALID_POINTER);
1510 uint16_t hGVM = pVM->hSelf;
1518 AssertReturn(pHandle->pVM == pVM, VERR_NOT_OWNER);
1525 AssertReturn(pGVM->pVM == pVM, VERR_NOT_OWNER);
1541 * @param pVM Pointer to the VM.
1546 GVMMR0DECL(int) GVMMR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM)
1550 return gvmmR0ByVMAndEMT(pVM, idCpu, ppGVM, &pGVMM);
1563 return pGVM ? pGVM->pVM : NULL;
1601 && VALID_PTR(pGVMM->aHandles[i].pVM)
1605 return pGVMM->aHandles[i].pVM;
1615 return pGVMM->aHandles[i].pVM;
1772 * @param pVM Pointer to the VM.
1777 GVMMR0DECL(int) GVMMR0SchedHalt(PVM pVM, VMCPUID idCpu, uint64_t u64ExpireGipTime)
1779 LogFlow(("GVMMR0SchedHalt: pVM=%p\n", pVM));
1786 int rc = gvmmR0ByVMAndEMT(pVM, idCpu, &pGVM, &pGVMM);
1907 * @param pVM Pointer to the VM.
1912 GVMMR0DECL(int) GVMMR0SchedWakeUpEx(PVM pVM, VMCPUID idCpu, bool fTakeUsedLock)
1919 int rc = gvmmR0ByVM(pVM, &pGVM, &pGVMM, fTakeUsedLock);
1961 * @param pVM Pointer to the VM.
1965 GVMMR0DECL(int) GVMMR0SchedWakeUp(PVM pVM, VMCPUID idCpu)
1967 return GVMMR0SchedWakeUpEx(pVM, idCpu, true /* fTakeUsedLock */);
2005 * @param pVM Pointer to the VM.
2009 GVMMR0DECL(int) GVMMR0SchedPokeEx(PVM pVM, VMCPUID idCpu, bool fTakeUsedLock)
2016 int rc = gvmmR0ByVM(pVM, &pGVM, &pGVMM, fTakeUsedLock);
2020 rc = gvmmR0SchedPokeOne(pGVM, &pVM->aCpus[idCpu]);
2043 * @param pVM Pointer to the VM.
2046 GVMMR0DECL(int) GVMMR0SchedPoke(PVM pVM, VMCPUID idCpu)
2048 return GVMMR0SchedPokeEx(pVM, idCpu, true /* fTakeUsedLock */);
2057 * @param pVM Pointer to the VM.
2061 GVMMR0DECL(int) GVMMR0SchedWakeUpAndPokeCpus(PVM pVM, PCVMCPUSET pSleepSet, PCVMCPUSET pPokeSet)
2072 int rc = gvmmR0ByVM(pVM, &pGVM, &pGVMM, true /* fTakeUsedLock */);
2087 gvmmR0SchedPokeOne(pGVM, &pVM->aCpus[idCpu]);
2103 * @param pVM Pointer to the VM.
2106 GVMMR0DECL(int) GVMMR0SchedWakeUpAndPokeCpusReq(PVM pVM, PGVMMSCHEDWAKEUPANDPOKECPUSREQ pReq)
2114 return GVMMR0SchedWakeUpAndPokeCpus(pVM, &pReq->SleepSet, &pReq->PokeSet);
2127 * @param pVM Pointer to the VM.
2134 GVMMR0DECL(int) GVMMR0SchedPoll(PVM pVM, VMCPUID idCpu, bool fYield)
2141 int rc = gvmmR0ByVMAndEMT(pVM, idCpu, &pGVM, &pGVMM);
2257 * @param pVM Pointer to the VM.
2261 GVMMR0DECL(void) GVMMR0SchedUpdatePeriodicPreemptionTimer(PVM pVM, RTCPUID idHostCpu, uint32_t uHz)
2263 NOREF(pVM);
2341 * @param pVM The VM to obtain statistics for. Optional.
2343 GVMMR0DECL(int) GVMMR0QueryStatistics(PGVMMSTATS pStats, PSUPDRVSESSION pSession, PVM pVM)
2345 LogFlow(("GVMMR0QueryStatistics: pStats=%p pSession=%p pVM=%p\n", pStats, pSession, pVM));
2358 if (pVM)
2361 int rc = gvmmR0ByVM(pVM, &pGVM, &pGVMM, true /*fTakeUsedLock*/);
2454 * @param pVM Pointer to the VM. Optional.
2457 GVMMR0DECL(int) GVMMR0QueryStatisticsReq(PVM pVM, PGVMMQUERYSTATISTICSSREQ pReq)
2465 return GVMMR0QueryStatistics(&pReq->Stats, pReq->pSession, pVM);
2476 * @param pVM The VM to reset statistics for. Optional.
2478 GVMMR0DECL(int) GVMMR0ResetStatistics(PCGVMMSTATS pStats, PSUPDRVSESSION pSession, PVM pVM)
2480 LogFlow(("GVMMR0ResetStatistics: pStats=%p pSession=%p pVM=%p\n", pStats, pSession, pVM));
2492 if (pVM)
2495 int rc = gvmmR0ByVM(pVM, &pGVM, &pGVMM, true /*fTakeUsedLock*/);
2569 * @param pVM Pointer to the VM. Optional.
2572 GVMMR0DECL(int) GVMMR0ResetStatisticsReq(PVM pVM, PGVMMRESETSTATISTICSSREQ pReq)
2580 return GVMMR0ResetStatistics(&pReq->Stats, pReq->pSession, pVM);