Changeset 19806 in vbox
- Timestamp:
- May 19, 2009 8:43:18 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 47451
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp
r18988 r19806 168 168 rc = VINF_PGM_GCPHYS_ALIASED; 169 169 pVM->pgm.s.fPhysCacheFlushPending = true; 170 pgmUnlock(pVM); 170 171 HWACCMFlushTLB(pVM); 171 172 #ifndef IN_RING3 … … 174 175 REMR3NotifyHandlerPhysicalRegister(pVM, enmType, GCPhys, GCPhysLast - GCPhys + 1, !!pfnHandlerR3); 175 176 #endif 176 pgmUnlock(pVM);177 177 if (rc != VINF_SUCCESS) 178 178 Log(("PGMHandlerPhysicalRegisterEx: returns %Rrc (%RGp-%RGp)\n", rc, GCPhys, GCPhysLast)); … … 268 268 * Clear the page bits and notify the REM about this change. 269 269 */ 270 HWACCMFlushTLB(pVM);271 270 pgmHandlerPhysicalResetRamFlags(pVM, pCur); 272 271 pgmHandlerPhysicalDeregisterNotifyREM(pVM, pCur); 273 272 pgmUnlock(pVM); 273 HWACCMFlushTLB(pVM); 274 274 MMHyperFree(pVM, pCur); 275 275 return VINF_SUCCESS; … … 552 552 pCur->Core.KeyLast - GCPhys + 1, !!pCur->pfnHandlerR3, fRestoreAsRAM); 553 553 #endif 554 pgmUnlock(pVM); 554 555 HWACCMFlushTLB(pVM); 555 pgmUnlock(pVM);556 556 Log(("PGMHandlerPhysicalModify: GCPhysCurrent=%RGp -> GCPhys=%RGp GCPhysLast=%RGp\n", 557 557 GCPhysCurrent, GCPhys, GCPhysLast)); … … 1136 1136 Assert(ppVirt); 1137 1137 1138 pgmLock(pVM); 1138 1139 PPGMPHYS2VIRTHANDLER pCur; 1139 1140 pCur = (PPGMPHYS2VIRTHANDLER)RTAvlroGCPhysRangeGet(&pVM->pgm.s.CTX_SUFF(pTrees)->PhysToVirtHandlers, GCPhys); … … 1141 1142 { 1142 1143 /* found a match! */ 1144 *ppVirt = (PPGMVIRTHANDLER)((uintptr_t)pCur + pCur->offVirtHandler); 1145 *piPage = pCur - &(*ppVirt)->aPhysToVirt[0]; 1146 pgmUnlock(pVM); 1147 1143 1148 #ifdef VBOX_STRICT_PGM_HANDLER_VIRTUAL 1144 1149 AssertRelease(pCur->offNextAlias & PGMPHYS2VIRTHANDLER_IS_HEAD); 1145 1150 #endif 1146 *ppVirt = (PPGMVIRTHANDLER)((uintptr_t)pCur + pCur->offVirtHandler);1147 *piPage = pCur - &(*ppVirt)->aPhysToVirt[0];1148 1149 1151 LogFlow(("PHYS2VIRT: found match for %RGp -> %RGv *piPage=%#x\n", GCPhys, (*ppVirt)->Core.Key, *piPage)); 1150 1152 STAM_PROFILE_STOP(&pVM->pgm.s.CTX_MID_Z(Stat,VirtHandlerSearchByPhys), a); … … 1152 1154 } 1153 1155 1156 pgmUnlock(pVM); 1154 1157 *ppVirt = NULL; 1155 1158 STAM_PROFILE_STOP(&pVM->pgm.s.CTX_MID_Z(Stat,VirtHandlerSearchByPhys), a); … … 1222 1225 PVM pVM = (PVM)pvUser; 1223 1226 1227 Assert(PGMIsLockOwner(pVM)); 1224 1228 /* 1225 1229 * Iterate the pages and apply the new state.
Note:
See TracChangeset
for help on using the changeset viewer.