Lines Matching refs:pVCpu

170  * @param   pVCpu       Pointer to the VMCPU.
178 void pgmPoolMonitorChainChanging(PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, RTGCPHYS GCPhysFault,
184 NOREF(pVCpu);
274 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
300 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
378 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
379 STAM_COUNTER_INC(&(pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZGuestCR3WriteConflict));
408 STAM_COUNTER_INC(&(pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZGuestCR3WriteConflict));
409 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
427 && !VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3))
449 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
450 STAM_COUNTER_INC(&(pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZGuestCR3WriteConflict));
486 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
487 STAM_COUNTER_INC(&(pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZGuestCR3WriteConflict));
525 STAM_COUNTER_INC(&(pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZGuestCR3WriteConflict));
526 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
554 STAM_COUNTER_INC(&(pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZGuestCR3WriteConflict));
555 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
734 * @param pVCpu Pointer to the VMCPU.
741 DECLINLINE(bool) pgmPoolMonitorIsReused(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pDis, RTGCPTR pvFault)
759 if (CPUMGetGuestCPL(pVCpu) == 3)
816 * @param pVCpu Pointer to the VMCPU.
825 static int pgmPoolAccessHandlerFlush(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,
839 VBOXSTRICTRC rc2 = EMInterpretInstructionDisasState(pVCpu, pDis, pRegFrame, pvFault, EMCODETYPE_ALL);
848 VMCPU_FF_SET(pVCpu, VMCPU_FF_TO_R3);
922 PVMCPU pVCpu = VMMGetCpu(pPool->CTX_SUFF(pVM));
927 uint32_t iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
928 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, (RTGCPTR)pu32, uIncrement);
929 PGMRZDynMapPopAutoSubset(pVCpu, iPrevSubset);
931 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, (RTGCPTR)pu32, uIncrement);
955 * @param pVCpu Pointer to the VMCPU.
964 DECLINLINE(int) pgmPoolAccessHandlerSimple(PVM pVM, PVMCPU pVCpu, PPGMPOOL pPool, PPGMPOOLPAGE pPage, PDISCPUSTATE pDis,
982 uint32_t iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
987 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, pvFault, cbWrite);
991 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault, pvFault, 8);
992 pgmPoolMonitorChainChanging(pVCpu, pPool, pPage, GCPhysFault + 8, pvFault + 8, cbWrite - 8);
996 PGMRZDynMapPopAutoSubset(pVCpu, iPrevSubset);
1002 VBOXSTRICTRC rc = EMInterpretInstructionDisasState(pVCpu, pDis, pRegFrame, pvFault, EMCODETYPE_ALL);
1066 PVMCPU pVCpu = VMMGetCpu(pVM);
1077 Log(("CPU%d: pgmPoolAccessHandler pgm pool page for %RGp changed (to %RGp) while waiting!\n", pVCpu->idCpu, PHYS_PAGE_ADDRESS(GCPhysFault), PHYS_PAGE_ADDRESS(pPage->GCPhys)));
1085 Assert(VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_TLB_FLUSH));
1106 PDISCPUSTATE pDis = &pVCpu->pgm.s.DisState;
1107 int rc = EMInterpretDisasCurrent(pVM, pVCpu, pDis, NULL);
1138 pVCpu->pgm.s.cPoolAccessHandler++;
1142 && pVCpu->pgm.s.cPoolAccessHandler == pPage->cLastAccessHandler + 1)
1148 pPage->cLastAccessHandler = pVCpu->pgm.s.cPoolAccessHandler;
1167 && !(fReused = pgmPoolMonitorIsReused(pVM, pVCpu, pRegFrame, pDis, pvFault))
1175 rc = pgmPoolAccessHandlerSimple(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault, &fReused);
1188 pPage->cLastAccessHandler = pVCpu->pgm.s.cPoolAccessHandler;
1197 pPage->cLastAccessHandler = pVCpu->pgm.s.cPoolAccessHandler;
1268 || ( !pgmPoolMonitorIsReused(pVM, pVCpu, pRegFrame, pDis, pvFault)
1315 rc = PGMShwMakePageWritable(pVCpu, pvFault, PGM_MK_PG_IS_WRITE_FAULT);
1343 rc = pgmPoolAccessHandlerFlush(pVM, pVCpu, pPool, pPage, pDis, pRegFrame, GCPhysFault, pvFault);
1348 if (PGMShwGetPage(pVCpu, pRegFrame->rip, NULL, NULL) == VINF_SUCCESS)
1658 PVMCPU pVCpu = VMMGetCpu(pVM);
1659 uint32_t iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
1724 PGMRZDynMapPopAutoSubset(pVCpu, iPrevSubset);
2512 PVMCPU pVCpu = VMMGetCpu(pVM);
2513 AssertFatalMsg(!(pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3), ("fSyncFlags=%x syncff=%d\n", pVCpu->pgm.s.fSyncFlags, VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3)));
2607 PVMCPU pVCpu = VMMGetCpu(pVM);
2608 AssertFatalMsg(!(pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) || VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3),
2609 ("%#x %#x\n", pVCpu->pgm.s.fSyncFlags, pVM->fGlobalForcedActions));
2728 * @param pVCpu Pointer to the VMCPU.
2732 int pgmPoolSyncCR3(PVMCPU pVCpu)
2734 PVM pVM = pVCpu->CTX_SUFF(pVM);
2735 LogFlow(("pgmPoolSyncCR3 fSyncFlags=%x\n", pVCpu->pgm.s.fSyncFlags));
2744 if (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL)
2747 if (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL)
2750 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */
2766 if (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL)
2769 return pgmPoolSyncCR3(pVCpu);
3485 PVMCPU pVCpu = VMMGetCpu(pVM);
3543 uint32_t iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
3561 PGMRZDynMapPopAutoSubset(pVCpu, iPrevSubset);
3568 pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_CLEAR_PGM_POOL;
3569 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
4852 PVMCPU pVCpu = VMMGetCpu(pVM);
4853 uint32_t iPrevSubset = PGMRZDynMapPushAutoSubset(pVCpu);
4885 PGMRZDynMapPopAutoSubset(pVCpu, iPrevSubset);
5291 * @param pVCpu The virtual CPU.
5293 void pgmR3PoolResetUnpluggedCpu(PVM pVM, PVMCPU pVCpu)
5295 pgmR3ExitShadowModeBeforePoolFlush(pVCpu);
5297 pgmR3ReEnterShadowModeAfterPoolFlush(pVM, pVCpu);
5298 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
5299 VMCPU_FF_SET(pVCpu, VMCPU_FF_TLB_FLUSH);
5449 PVMCPU pVCpu = &pVM->aCpus[i];
5450 pgmR3ReEnterShadowModeAfterPoolFlush(pVM, pVCpu);
5451 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3);
5452 VMCPU_FF_SET(pVCpu, VMCPU_FF_TLB_FLUSH);