Changeset 41462 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- May 28, 2012 11:42:50 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78205
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r41393 r41462 1820 1820 1821 1821 PGM_REG_COUNTER(&pPgmCpu->cGuestModeChanges, "/PGM/CPU%u/cGuestModeChanges", "Number of guest mode changes."); 1822 PGM_REG_COUNTER(&pPgmCpu->cA20Changes, "/PGM/CPU%u/cA20Changes", "Number of A20 gate changes."); 1822 1823 1823 1824 #ifdef VBOX_WITH_STATISTICS … … 2512 2513 2513 2514 STAM_REL_COUNTER_RESET(&pVCpu->pgm.s.cGuestModeChanges); 2515 STAM_REL_COUNTER_RESET(&pVCpu->pgm.s.cA20Changes); 2514 2516 } 2515 2517 … … 2617 2619 /* print info. */ 2618 2620 if (fGuest) 2619 pHlp->pfnPrintf(pHlp, "Guest paging mode: %s , changed %RU64 times, A20 %s\n",2621 pHlp->pfnPrintf(pHlp, "Guest paging mode: %s (changed %RU64 times), A20 %s (changed %RU64 times)\n", 2620 2622 PGMGetModeName(pVM->aCpus[0].pgm.s.enmGuestMode), pVM->aCpus[0].pgm.s.cGuestModeChanges.c, 2621 pVM->aCpus[0].pgm.s.fA20Enabled ? "enabled" : "disabled" );2623 pVM->aCpus[0].pgm.s.fA20Enabled ? "enabled" : "disabled", pVM->aCpus[0].pgm.s.cA20Changes.c); 2622 2624 if (fShadow) 2623 2625 pHlp->pfnPrintf(pHlp, "Shadow paging mode: %s\n", PGMGetModeName(pVM->aCpus[0].pgm.s.enmShadowMode)); … … 3627 3629 return rc; 3628 3630 } 3631 3632 3633 /** 3634 * Called by PGMR3PhysSetA20 after changing the A20 state. 3635 * 3636 * @param pVCpu The VMCPU to operate on. 3637 */ 3638 void pgmR3RefreshShadowModeAfterA20Change(PVMCPU pVCpu) 3639 { 3640 /** @todo Probably doing a bit too much here. */ 3641 int rc = pgmR3ExitShadowModeBeforePoolFlush(pVCpu); 3642 AssertReleaseRC(rc); 3643 rc = pgmR3ReEnterShadowModeAfterPoolFlush(pVCpu->CTX_SUFF(pVM), pVCpu); 3644 AssertReleaseRC(rc); 3645 } 3646 3629 3647 3630 3648 #ifdef VBOX_WITH_DEBUGGER -
trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
r41435 r41462 2330 2330 2331 2331 /* Force a PGM pool flush as guest ram references have been changed. */ 2332 /** todo; not entirely SMP safe; assuming for now the guest takes care of this internally (not touch mapped mmio while changing the mapping). */ 2332 /** @todo Not entirely SMP safe; assuming for now the guest takes care of 2333 * this internally (not touch mapped mmio while changing the mapping). */ 2333 2334 PVMCPU pVCpu = VMMGetCpu(pVM); 2334 2335 pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_CLEAR_PGM_POOL; … … 2733 2734 2734 2735 /* Force a PGM pool flush as guest ram references have been changed. */ 2735 /** todo; not entirely SMP safe; assuming for now the guest takes care of this internally (not touch mapped mmio while changing the mapping). */ 2736 /** @todo not entirely SMP safe; assuming for now the guest takes care of 2737 * this internally (not touch mapped mmio while changing the mapping). */ 2736 2738 PVMCPU pVCpu = VMMGetCpu(pVM); 2737 2739 pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_CLEAR_PGM_POOL; … … 3718 3720 /** @todo we're not handling this correctly for VT-x / AMD-V. See #2911 */ 3719 3721 #ifdef PGM_WITH_A20 3720 pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_ CLEAR_PGM_POOL | PGM_SYNC_UPDATE_PAGE_BIT_VIRTUAL;3722 pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_UPDATE_PAGE_BIT_VIRTUAL; 3721 3723 VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3); 3724 pgmR3RefreshShadowModeAfterA20Change(pVCpu); 3722 3725 #endif 3726 STAM_REL_COUNTER_INC(&pVCpu->pgm.s.cA20Changes); 3723 3727 } 3724 3728 }
Note:
See TracChangeset
for help on using the changeset viewer.