Lines Matching defs:pUVM

76     PUVM    pUVM = pUVCpu->pUVM;
79 AssertReleaseMsg(VALID_PTR(pUVM) && pUVM->u32Magic == UVM_MAGIC,
82 rc = RTTlsSet(pUVM->vm.s.idxTLS, pUVCpu);
83 AssertReleaseMsgRCReturn(rc, ("RTTlsSet %x failed with %Rrc\n", pUVM->vm.s.idxTLS, rc), rc);
85 if ( pUVM->pVmm2UserMethods
86 && pUVM->pVmm2UserMethods->pfnNotifyEmtInit)
87 pUVM->pVmm2UserMethods->pfnNotifyEmtInit(pUVM->pVmm2UserMethods, pUVM, pUVCpu);
93 Log(("vmR3EmulationThread: Emulation thread starting the days work... Thread=%#x pUVM=%p\n", ThreadSelf, pUVM));
101 if (!pUVM->pVM)
106 if (pUVM->vm.s.fTerminateEMT)
117 if ( (pUVM->vm.s.pNormalReqs || pUVM->vm.s.pPriorityReqs)
123 rc = VMR3ReqProcessU(pUVM, VMCPUID_ANY, false /*fPriorityOnly*/);
124 Log(("vmR3EmulationThread: Req rc=%Rrc, VM state %s -> %s\n", rc, VMR3GetStateName(enmBefore), pUVM->pVM ? VMR3GetStateName(pUVM->pVM->enmVMState) : "CREATING"));
131 rc = VMR3ReqProcessU(pUVM, pUVCpu->idCpu, false /*fPriorityOnly*/);
132 Log(("vmR3EmulationThread: Req (cpu=%u) rc=%Rrc, VM state %s -> %s\n", pUVCpu->idCpu, rc, VMR3GetStateName(enmBefore), pUVM->pVM ? VMR3GetStateName(pUVM->pVM->enmVMState) : "CREATING"));
155 PVM pVM = pUVM->pVM;
157 if (pUVM->vm.s.fTerminateEMT)
168 else if (pUVM->vm.s.pNormalReqs || pUVM->vm.s.pPriorityReqs)
173 rc = VMR3ReqProcessU(pUVM, VMCPUID_ANY, false /*fPriorityOnly*/);
181 rc = VMR3ReqProcessU(pUVM, pUVCpu->idCpu, false /*fPriorityOnly*/);
197 rc = VMR3Reset(pVM->pUVM);
218 || pUVM->vm.s.fTerminateEMT)
228 && pUVM->pVM)
230 PVM pVM = pUVM->pVM;
248 Log(("vmR3EmulationThread: Terminating emulation thread! Thread=%#x pUVM=%p rc=%Rrc enmBefore=%d enmVMState=%d\n",
249 ThreadSelf, pUVM, rc, enmBefore, pUVM->pVM ? pUVM->pVM->enmVMState : VMSTATE_TERMINATED));
251 && pUVM->pVM)
253 PVM pVM = pUVM->pVM;
255 pUVM->pVM = NULL;
263 if ( pUVM->pVmm2UserMethods
264 && pUVM->pVmm2UserMethods->pfnNotifyEmtTerm)
265 pUVM->pVmm2UserMethods->pfnNotifyEmtTerm(pUVM->pVmm2UserMethods, pUVM, pUVCpu);
308 ASMAtomicUoWriteBool(&pUVCpu->pUVM->vm.s.fTerminateEMT, true);
409 static int vmR3HaltMethod12ReadConfigU(PUVM pUVM)
415 pUVM->vm.s.Halt.Method12.u32LagBlockIntervalDivisorCfg = 4;
416 pUVM->vm.s.Halt.Method12.u32MinBlockIntervalCfg = 2*1000000;
417 pUVM->vm.s.Halt.Method12.u32MaxBlockIntervalCfg = 75*1000000;
418 pUVM->vm.s.Halt.Method12.u32StartSpinningCfg = 30*1000000;
419 pUVM->vm.s.Halt.Method12.u32StopSpinningCfg = 20*1000000;
421 pUVM->vm.s.Halt.Method12.u32LagBlockIntervalDivisorCfg = 4;
422 pUVM->vm.s.Halt.Method12.u32MinBlockIntervalCfg = 5*1000000;
423 pUVM->vm.s.Halt.Method12.u32MaxBlockIntervalCfg = 200*1000000;
424 pUVM->vm.s.Halt.Method12.u32StartSpinningCfg = 20*1000000;
425 pUVM->vm.s.Halt.Method12.u32StopSpinningCfg = 2*1000000;
434 PCFGMNODE pCfg = CFGMR3GetChild(CFGMR3GetRoot(pUVM->pVM), "/VMM/HaltedMethod1");
439 pUVM->vm.s.Halt.Method12.u32LagBlockIntervalDivisorCfg = u32;
441 pUVM->vm.s.Halt.Method12.u32MinBlockIntervalCfg = u32;
443 pUVM->vm.s.Halt.Method12.u32MaxBlockIntervalCfg = u32;
445 pUVM->vm.s.Halt.Method12.u32StartSpinningCfg = u32;
447 pUVM->vm.s.Halt.Method12.u32StopSpinningCfg = u32;
449 pUVM->vm.s.Halt.Method12.u32LagBlockIntervalDivisorCfg,
450 pUVM->vm.s.Halt.Method12.u32MinBlockIntervalCfg,
451 pUVM->vm.s.Halt.Method12.u32MaxBlockIntervalCfg,
452 pUVM->vm.s.Halt.Method12.u32StartSpinningCfg,
453 pUVM->vm.s.Halt.Method12.u32StopSpinningCfg));
464 * @param pUVM Pointer to the user mode VM structure.
466 static DECLCALLBACK(int) vmR3HaltMethod1Init(PUVM pUVM)
468 return vmR3HaltMethod12ReadConfigU(pUVM);
479 PUVM pUVM = pUVCpu->pUVM;
496 fSpinning = TMVirtualSyncGetLag(pVM) >= pUVM->vm.s.Halt.Method12.u32StopSpinningCfg;
501 > RT_MAX(pUVM->vm.s.Halt.Method12.u32MinBlockIntervalCfg,
502 RT_MIN(u64Lag / pUVM->vm.s.Halt.Method12.u32LagBlockIntervalDivisorCfg,
503 pUVM->vm.s.Halt.Method12.u32MaxBlockIntervalCfg));
513 fSpinning = TMVirtualSyncGetLag(pVM) >= pUVM->vm.s.Halt.Method12.u32StartSpinningCfg;
625 * @param pUVM Pointer to the user mode VM structure.
627 static DECLCALLBACK(int) vmR3HaltGlobal1Init(PUVM pUVM)
632 uint32_t cNsResolution = SUPSemEventMultiGetResolution(pUVM->vm.s.pSession);
634 pUVM->vm.s.Halt.Global1.cNsSpinBlockThresholdCfg = 50000;
636 pUVM->vm.s.Halt.Global1.cNsSpinBlockThresholdCfg = cNsResolution / 4;
638 pUVM->vm.s.Halt.Global1.cNsSpinBlockThresholdCfg = 2000;
646 PCFGMNODE pCfg = CFGMR3GetChild(CFGMR3GetRoot(pUVM->pVM), "/VMM/HaltedGlobal1");
651 pUVM->vm.s.Halt.Global1.cNsSpinBlockThresholdCfg = u32;
654 pUVM->vm.s.Halt.Global1.cNsSpinBlockThresholdCfg));
665 PUVM pUVM = pUVCpu->pUVM;
705 if (u64Delta >= pUVM->vm.s.Halt.Global1.cNsSpinBlockThresholdCfg)
766 PVM pVM = pUVCpu->pUVM->pVM;
844 PUVM pUVM = pUVCpu->pUVM;
854 if (pUVM->vm.s.pNormalReqs || pUVM->vm.s.pPriorityReqs) /* global requests pending? */
865 if (pUVM->vm.s.fTerminateEMT)
976 DECLR3CALLBACKMEMBER(int, pfnInit,(PUVM pUVM));
978 DECLR3CALLBACKMEMBER(void, pfnTerm,(PUVM pUVM));
986 DECLR3CALLBACKMEMBER(void, pfnNotifyGlobalFF,(PUVM pUVM, uint32_t fFlags));
1002 * @param pUVM Pointer to the user mode VM structure.
1006 VMMR3_INT_DECL(void) VMR3NotifyGlobalFFU(PUVM pUVM, uint32_t fFlags)
1009 uint32_t iHaldMethod = pUVM->vm.s.iHaltMethod;
1012 g_aHaltMethods[iHaldMethod].pfnNotifyGlobalFF(pUVM, fFlags);
1014 for (VMCPUID iCpu = 0; iCpu < pUVM->cCpus; iCpu++)
1015 g_aHaltMethods[iHaldMethod].pfnNotifyCpuFF(&pUVM->aCpus[iCpu], fFlags);
1031 PUVM pUVM = pUVCpu->pUVM;
1034 g_aHaltMethods[pUVM->vm.s.iHaltMethod].pfnNotifyCpuFF(pUVCpu, fFlags);
1104 PUVM pUVM = pUVCpu->pUVM;
1105 int rc = g_aHaltMethods[pUVM->vm.s.iHaltMethod].pfnHalt(pUVCpu, fMask, u64Now);
1155 PUVM pUVM = pUVCpu->pUVM;
1156 int rc = g_aHaltMethods[pUVM->vm.s.iHaltMethod].pfnWait(pUVCpu);
1157 LogFlow(("VMR3WaitU: returns %Rrc (FF %#x)\n", rc, pUVM->pVM ? pUVM->pVM->fGlobalForcedActions : 0));
1182 * @param pUVM Pointer to the user mode VM structure.
1184 VMMR3_INT_DECL(void) VMR3AsyncPdmNotificationWakeupU(PUVM pUVM)
1187 VM_FF_SET(pUVM->pVM, VM_FF_REQUEST); /* this will have to do for now. */
1188 g_aHaltMethods[pUVM->vm.s.iHaltMethod].pfnNotifyCpuFF(&pUVM->aCpus[0], 0 /*fFlags*/);
1202 PUVM pUVM = pVM->pUVM;
1210 if ( pUVM->vm.s.enmHaltMethod != VMHALTMETHOD_INVALID
1211 && g_aHaltMethods[pUVM->vm.s.iHaltMethod].pfnTerm)
1213 g_aHaltMethods[pUVM->vm.s.iHaltMethod].pfnTerm(pUVM);
1214 pUVM->vm.s.enmHaltMethod = VMHALTMETHOD_INVALID;
1225 memset(&pUVM->vm.s.Halt, 0, sizeof(pUVM->vm.s.Halt));
1228 rc = g_aHaltMethods[i].pfnInit(pUVM);
1241 pUVM->vm.s.enmHaltMethod = g_aHaltMethods[i].enmHaltMethod;
1242 ASMAtomicWriteU32(&pUVM->vm.s.iHaltMethod, i);
1252 * @param pUVM Pointer to the user mode VM structure.
1256 int vmR3SetHaltMethodU(PUVM pUVM, VMHALTMETHOD enmHaltMethod)
1258 PVM pVM = pUVM->pVM; Assert(pVM);