Changeset 14822 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Nov 30, 2008 5:36:38 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 40148
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/PGMR0DynMap.cpp
r14810 r14822 75 75 #if 0 76 76 /* Assertions causes panics if preemption is disabled, this can be used to work aroudn that. */ 77 #define RTSpinlockAcquire(a,b) do {} while (0)78 #define RTSpinlockRelease(a,b) do {} while (0)77 //#define RTSpinlockAcquire(a,b) do {} while (0) 78 //#define RTSpinlockRelease(a,b) do {} while (0) 79 79 #endif 80 80 … … 318 318 g_pPGMR0DynMap = NULL; 319 319 320 /* This should *never* happen, but in case it does try not to leak memory. */ 320 321 AssertLogRelMsg(!pThis->cUsers && !pThis->paPages && !pThis->pvSavedPTEs && !pThis->cPages, 321 322 ("cUsers=%d paPages=%p pvSavedPTEs=%p cPages=%#x\n", 322 323 pThis->cUsers, pThis->paPages, pThis->pvSavedPTEs, pThis->cPages)); 324 if (pThis->paPages) 325 pgmR0DynMapTearDown(pThis); 323 326 324 327 /* Free the associated resources. */ … … 363 366 * Do we need the cache? Skip the last bit if we don't. 364 367 */ 365 #if 1366 368 if (!VMMIsHwVirtExtForced(pVM)) 367 369 return VINF_SUCCESS; 368 #endif369 370 370 371 /* … … 1066 1067 while (!ASMAtomicCmpXchgExU32(&paPages[iPage].uPte.pLegacy->u, uNew, uOld, &uOld)) 1067 1068 AssertMsgFailed(("uOld=%#x uOld2=%#x uNew=%#x\n", uOld, uOld2, uNew)); 1069 Assert(paPages[iPage].uPte.pLegacy->u == paSavedPTEs[iPage]); 1068 1070 } 1069 1071 } … … 1078 1080 while (!ASMAtomicCmpXchgExU64(&paPages[iPage].uPte.pPae->u, uNew, uOld, &uOld)) 1079 1081 AssertMsgFailed(("uOld=%#llx uOld2=%#llx uNew=%#llx\n", uOld, uOld2, uNew)); 1082 Assert(paPages[iPage].uPte.pPae->u == paSavedPTEs[iPage]); 1080 1083 } 1081 1084 } … … 1120 1123 pThis->cPages = 0; 1121 1124 pThis->cLoad = 0; 1125 pThis->cGuardPages = 0; 1122 1126 } 1123 1127 … … 1175 1179 iFreePage = iPage; 1176 1180 else if (!paPages[(iPage + 1) % cPages].cRefs) 1177 iFreePage = iPage + 1;1181 iFreePage = (iPage + 1) % cPages; 1178 1182 else if (!paPages[(iPage + 2) % cPages].cRefs) 1179 iFreePage = iPage + 2;1183 iFreePage = (iPage + 2) % cPages; 1180 1184 else if (!paPages[(iPage + 3) % cPages].cRefs) 1181 iFreePage = iPage + 3;1185 iFreePage = (iPage + 3) % cPages; 1182 1186 else if (!paPages[(iPage + 4) % cPages].cRefs) 1183 iFreePage = iPage + 4;1187 iFreePage = (iPage + 4) % cPages; 1184 1188 else 1185 1189 { … … 1201 1205 } 1202 1206 } 1207 Assert(iFreePage < cPages); 1203 1208 1204 1209 /* … … 1217 1222 while (!ASMAtomicCmpXchgExU32(&paPages[iFreePage].uPte.pLegacy->u, uNew, uOld, &uOld)) 1218 1223 AssertMsgFailed(("uOld=%#x uOld2=%#x uNew=%#x\n", uOld, uOld2, uNew)); 1224 Assert(paPages[iPage].uPte.pLegacy->u == uNew); 1219 1225 } 1220 1226 else … … 1227 1233 while (!ASMAtomicCmpXchgExU64(&paPages[iFreePage].uPte.pPae->u, uNew, uOld, &uOld)) 1228 1234 AssertMsgFailed(("uOld=%#llx uOld2=%#llx uNew=%#llx\n", uOld, uOld2, uNew)); 1235 Assert(paPages[iPage].uPte.pPae->u == uNew); 1229 1236 /*Log6(("pgmR0DynMapPageSlow: #%x - %RHp %p %#llx\n", iFreePage, HCPhys, paPages[iFreePage].pvPage, uNew));*/ 1230 1237 }
Note:
See TracChangeset
for help on using the changeset viewer.