Lines Matching refs:iPage

245         for (uint32_t iPage = 0; iPage < cPages; iPage++)
247 pRom->aPages[iPage].LiveSave.u8Prot = (uint8_t)PGMROMPROT_INVALID;
248 pRom->aPages[iPage].LiveSave.fWrittenTo = false;
249 pRom->aPages[iPage].LiveSave.fDirty = true;
250 pRom->aPages[iPage].LiveSave.fDirtiedRecently = true;
253 if (PGMROMPROT_IS_ROM(pRom->aPages[iPage].enmProt))
254 pRom->aPages[iPage].LiveSave.fWrittenTo = !PGM_PAGE_IS_ZERO(&pRom->aPages[iPage].Shadow) && !PGM_PAGE_IS_BALLOONED(&pRom->aPages[iPage].Shadow);
257 RTGCPHYS GCPhys = pRom->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
262 pRom->aPages[iPage].LiveSave.fWrittenTo = !PGM_PAGE_IS_ZERO(pPage) && !PGM_PAGE_IS_BALLOONED(pPage);
264 pRom->aPages[iPage].LiveSave.fWrittenTo = !PGM_PAGE_IS_ZERO(&pRom->aPages[iPage].Shadow) && !PGM_PAGE_IS_BALLOONED(&pRom->aPages[iPage].Shadow);
404 for (uint32_t iPage = 0; iPage < cPages; iPage++)
406 PPGMROMPAGE pRomPage = &pRom->aPages[iPage];
447 for (uint32_t iPage = 0; iPage < cPages; iPage++)
449 RTGCPHYS GCPhys = pRom->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
450 PGMROMPROT enmProt = pRom->aPages[iPage].enmProt;
457 pPage = &pRom->aPages[iPage].Virgin;
476 if (iPage > 0)
482 SSMR3PutU32(pSSM, iPage);
491 pRom->aPages[iPage].LiveSave.u8Prot = (uint8_t)enmProt;
534 for (uint32_t iPage = 0; iPage < cPages; iPage++)
536 PPGMROMPAGE pRomPage = &pRom->aPages[iPage];
548 RTGCPHYS GCPhys = pRom->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
570 if (iPage - 1U == iPrevPage && iPage > 0)
576 SSMR3PutU32(pSSM, iPage);
585 iPrevPage = iPage;
597 if (iPage - 1U == iPrevPage && iPage > 0)
603 SSMR3PutU32(pSSM, iPage);
610 iPrevPage = iPage;
652 for (uint32_t iPage = 0; iPage < cPages; iPage++)
655 paLSPages[iPage].fDirty = true;
656 paLSPages[iPage].cUnchangedScans = 0;
657 paLSPages[iPage].fZero = true;
658 paLSPages[iPage].u32CrcH1 = PGM_STATE_CRC32_ZERO_HALF_PAGE;
659 paLSPages[iPage].u32CrcH2 = PGM_STATE_CRC32_ZERO_HALF_PAGE;
881 for (uint32_t iPage = 0; iPage < cPages; iPage++)
883 uint8_t const *pbPage = (uint8_t const *)pMmio2->pvR3 + iPage * PAGE_SIZE;
884 pgmR3ScanMmio2Page(pVM, pbPage, &paLSPages[iPage]);
923 for (uint32_t iPage = 0; iPage < cPages; iPage++, pbPage += PAGE_SIZE)
931 if ( !paLSPages[iPage].fDirty
932 && !pgmR3ScanMmio2Page(pVM, pbPage, &paLSPages[iPage]))
934 if (paLSPages[iPage].fZero)
939 if (!memcmp(abSha1Hash, paLSPages[iPage].abSha1Saved, sizeof(abSha1Hash)))
942 u8Type = paLSPages[iPage].fZero ? PGM_STATE_REC_MMIO2_ZERO : PGM_STATE_REC_MMIO2_RAW;
946 if (iPage != 0 && iPage == iPageLast + 1)
952 rc = SSMR3PutU32(pSSM, iPage);
958 iPageLast = iPage;
982 for (uint32_t iPage = 0; iPage < cPages; iPage++, pbPage += PAGE_SIZE)
985 if (!paLSPages[iPage].fDirty)
987 if (paLSPages[iPage].cUnchangedScans < 3)
989 if (pgmR3ScanMmio2Page(pVM, pbPage, &paLSPages[iPage]))
993 bool const fZero = paLSPages[iPage].fZero;
998 RTSha1(abPage, PAGE_SIZE, paLSPages[iPage].abSha1Saved);
1001 uint8_t u8Type = paLSPages[iPage].fZero ? PGM_STATE_REC_MMIO2_ZERO : PGM_STATE_REC_MMIO2_RAW;
1002 if (iPage != 0 && iPage == iPageLast + 1)
1008 rc = SSMR3PutU32(pSSM, iPage);
1016 paLSPages[iPage].fDirty = false;
1022 iPageLast = iPage;
1108 uint32_t iPage = cPages;
1109 while (iPage-- > 0)
1112 PCPGMPAGE pPage = &pCur->aPages[iPage];
1113 paLSPages[iPage].cDirtied = 0;
1114 paLSPages[iPage].fDirty = 1; /* everything is dirty at this time */
1115 paLSPages[iPage].fWriteMonitored = 0;
1116 paLSPages[iPage].fWriteMonitoredJustNow = 0;
1117 paLSPages[iPage].u2Reserved = 0;
1124 paLSPages[iPage].fZero = 1;
1125 paLSPages[iPage].fShared = 0;
1127 paLSPages[iPage].u32Crc = PGM_STATE_CRC32_ZERO_PAGE;
1132 paLSPages[iPage].fZero = 0;
1133 paLSPages[iPage].fShared = 1;
1135 paLSPages[iPage].u32Crc = UINT32_MAX;
1140 paLSPages[iPage].fZero = 0;
1141 paLSPages[iPage].fShared = 0;
1143 paLSPages[iPage].u32Crc = UINT32_MAX;
1146 paLSPages[iPage].fIgnore = 0;
1153 paLSPages[iPage].fZero = 0;
1154 paLSPages[iPage].fShared = 0;
1155 paLSPages[iPage].fDirty = 0;
1156 paLSPages[iPage].fIgnore = 1;
1158 paLSPages[iPage].u32Crc = UINT32_MAX;
1168 paLSPages[iPage].fZero = 0;
1169 paLSPages[iPage].fShared = 0;
1170 paLSPages[iPage].fDirty = 0;
1171 paLSPages[iPage].fIgnore = 1;
1173 paLSPages[iPage].u32Crc = UINT32_MAX;
1180 paLSPages[iPage].fZero = 0;
1181 paLSPages[iPage].fShared = 0;
1182 paLSPages[iPage].fDirty = 0;
1183 paLSPages[iPage].fIgnore = 1;
1185 paLSPages[iPage].u32Crc = UINT32_MAX;
1263 * @param iPage The page index.
1265 static void pgmR3StateCalcCrc32ForRamPage(PVM pVM, PPGMRAMRANGE pCur, PPGMLIVESAVERAMPAGE paLSPages, uint32_t iPage)
1267 RTGCPHYS GCPhys = pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
1270 int rc = pgmPhysGCPhys2CCPtrInternalReadOnly(pVM, &pCur->aPages[iPage], GCPhys, &pvPage, &PgMpLck);
1273 paLSPages[iPage].u32Crc = RTCrc32(pvPage, PAGE_SIZE);
1277 paLSPages[iPage].u32Crc = UINT32_MAX; /* Invalid */
1288 * @param iPage The page index.
1290 static void pgmR3StateVerifyCrc32ForPage(void const *pvPage, PPGMRAMRANGE pCur, PPGMLIVESAVERAMPAGE paLSPages, uint32_t iPage, const char *pszWhere)
1292 if (paLSPages[iPage].u32Crc != UINT32_MAX)
1295 Assert( ( !PGM_PAGE_IS_ZERO(&pCur->aPages[iPage])
1296 && !PGM_PAGE_IS_BALLOONED(&pCur->aPages[iPage]))
1298 AssertMsg(paLSPages[iPage].u32Crc == u32Crc,
1299 ("%08x != %08x for %RGp %R[pgmpage] %s\n", paLSPages[iPage].u32Crc, u32Crc,
1300 pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pCur->aPages[iPage], pszWhere));
1312 * @param iPage The page index.
1314 static void pgmR3StateVerifyCrc32ForRamPage(PVM pVM, PPGMRAMRANGE pCur, PPGMLIVESAVERAMPAGE paLSPages, uint32_t iPage, const char *pszWhere)
1316 if (paLSPages[iPage].u32Crc != UINT32_MAX)
1318 RTGCPHYS GCPhys = pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
1321 int rc = pgmPhysGCPhys2CCPtrInternalReadOnly(pVM, &pCur->aPages[iPage], GCPhys, &pvPage, &PgMpLck);
1324 pgmR3StateVerifyCrc32ForPage(pvPage, pCur, paLSPages, iPage, pszWhere);
1356 uint32_t iPage = GCPhysCur <= pCur->GCPhys ? 0 : (GCPhysCur - pCur->GCPhys) >> PAGE_SHIFT;
1358 for (; iPage < cPages; iPage++)
1363 && (iPage & 0x7ff) == 0x100
1368 GCPhysCur = pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
1373 if (paLSPages[iPage].fIgnore)
1376 if (RT_LIKELY(PGM_PAGE_GET_TYPE(&pCur->aPages[iPage]) == PGMPAGETYPE_RAM))
1381 switch (PGM_PAGE_GET_STATE(&pCur->aPages[iPage]))
1386 if (PGM_PAGE_IS_WRITTEN_TO(&pCur->aPages[iPage]))
1388 AssertMsg(paLSPages[iPage].fWriteMonitored,
1389 ("%RGp %R[pgmpage]\n", pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pCur->aPages[iPage]));
1390 PGM_PAGE_CLEAR_WRITTEN_TO(pVM, &pCur->aPages[iPage]);
1396 AssertMsg(!paLSPages[iPage].fWriteMonitored,
1397 ("%RGp %R[pgmpage]\n", pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pCur->aPages[iPage]));
1401 if (!paLSPages[iPage].fDirty)
1404 if (paLSPages[iPage].fZero)
1407 if (++paLSPages[iPage].cDirtied > PGMLIVSAVEPAGE_MAX_DIRTIED)
1408 paLSPages[iPage].cDirtied = PGMLIVSAVEPAGE_MAX_DIRTIED;
1411 pgmPhysPageWriteMonitor(pVM, &pCur->aPages[iPage],
1412 pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT));
1413 paLSPages[iPage].fWriteMonitored = 1;
1414 paLSPages[iPage].fWriteMonitoredJustNow = 1;
1415 paLSPages[iPage].fDirty = 1;
1416 paLSPages[iPage].fZero = 0;
1417 paLSPages[iPage].fShared = 0;
1419 paLSPages[iPage].u32Crc = UINT32_MAX; /* invalid */
1424 Assert(paLSPages[iPage].fWriteMonitored);
1425 if (PGM_PAGE_GET_WRITE_LOCKS(&pCur->aPages[iPage]) == 0)
1428 if (paLSPages[iPage].fWriteMonitoredJustNow)
1429 pgmR3StateCalcCrc32ForRamPage(pVM, pCur, paLSPages, iPage);
1431 pgmR3StateVerifyCrc32ForRamPage(pVM, pCur, paLSPages, iPage, "scan");
1433 paLSPages[iPage].fWriteMonitoredJustNow = 0;
1437 paLSPages[iPage].fWriteMonitoredJustNow = 1;
1439 paLSPages[iPage].u32Crc = UINT32_MAX; /* invalid */
1441 if (!paLSPages[iPage].fDirty)
1445 if (++paLSPages[iPage].cDirtied > PGMLIVSAVEPAGE_MAX_DIRTIED)
1446 paLSPages[iPage].cDirtied = PGMLIVSAVEPAGE_MAX_DIRTIED;
1453 if (!paLSPages[iPage].fZero)
1455 if (!paLSPages[iPage].fDirty)
1457 paLSPages[iPage].fDirty = 1;
1461 paLSPages[iPage].fZero = 1;
1462 paLSPages[iPage].fShared = 0;
1464 paLSPages[iPage].u32Crc = PGM_STATE_CRC32_ZERO_PAGE;
1470 if (!paLSPages[iPage].fShared)
1472 if (!paLSPages[iPage].fDirty)
1474 paLSPages[iPage].fDirty = 1;
1476 if (paLSPages[iPage].fZero)
1480 paLSPages[iPage].fZero = 0;
1481 paLSPages[iPage].fShared = 1;
1483 pgmR3StateCalcCrc32ForRamPage(pVM, pCur, paLSPages, iPage);
1494 Assert(!paLSPages[iPage].fIgnore); /* skipped before switch */
1495 paLSPages[iPage].fIgnore = 1;
1496 if (paLSPages[iPage].fWriteMonitored)
1500 if (RT_UNLIKELY(PGM_PAGE_GET_STATE(&pCur->aPages[iPage]) == PGM_PAGE_STATE_WRITE_MONITORED))
1502 AssertMsgFailed(("%R[pgmpage]", &pCur->aPages[iPage])); /* shouldn't happen. */
1503 PGM_PAGE_SET_STATE(pVM, &pCur->aPages[iPage], PGM_PAGE_STATE_ALLOCATED);
1507 if (PGM_PAGE_IS_WRITTEN_TO(&pCur->aPages[iPage]))
1509 PGM_PAGE_CLEAR_WRITTEN_TO(pVM, &pCur->aPages[iPage]);
1517 if (paLSPages[iPage].fDirty)
1522 if (paLSPages[iPage].fZero)
1571 uint32_t iPage = GCPhysCur <= pCur->GCPhys ? 0 : (GCPhysCur - pCur->GCPhys) >> PAGE_SHIFT;
1573 for (; iPage < cPages; iPage++)
1577 && (iPage & 0x7ff) == 0x100
1581 GCPhysCur = pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
1585 PPGMPAGE pCurPage = &pCur->aPages[iPage];
1593 if (!paLSPages[iPage].fDirty)
1595 if (paLSPages[iPage].fWriteMonitoredJustNow)
1597 if (paLSPages[iPage].fIgnore)
1602 != ( paLSPages[iPage].fZero
1604 : paLSPages[iPage].fShared
1608 if (PGM_PAGE_GET_WRITE_LOCKS(&pCur->aPages[iPage]) > 0)
1614 && !paLSPages[iPage].fDirty
1615 && !paLSPages[iPage].fIgnore)
1619 pgmR3StateVerifyCrc32ForRamPage(pVM, pCur, paLSPages, iPage, "save#1");
1631 RTGCPHYS GCPhys = pCur->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);
1651 pgmR3StateVerifyCrc32ForPage(abPage, pCur, paLSPages, iPage, "save#3");
1711 pgmR3StateVerifyCrc32ForRamPage(pVM, pCur, paLSPages, iPage, "save#2");
1732 paLSPages[iPage].fDirty = 0;
1799 uint32_t iPage = pCur->cb >> PAGE_SHIFT;
1800 while (iPage--)
1802 PPGMPAGE pPage = &pCur->aPages[iPage];
2489 for (uint32_t iPage = 0; iPage < cPages; iPage++)
2491 RTGCPHYS const GCPhysPage = ((RTGCPHYS)iPage << PAGE_SHIFT) + pRam->GCPhys;
2492 PPGMPAGE pPage = &pRam->aPages[iPage];
2495 AssertLogRelMsgRCReturn(rc, ("pPage=%R[pgmpage] iPage=%#x GCPhysPage=%#x %s\n", pPage, iPage, GCPhysPage, pRam->pszDesc), rc);
2500 AssertLogRelMsgRCReturn(rc, ("rc=%Rrc iPage=%#x GCPhysPage=%#x %s\n", rc, iPage, GCPhysPage, pRam->pszDesc), rc);
2512 for (uint32_t iPage = 0; iPage < cPages; iPage++)
2516 AssertLogRelMsgRCReturn(rc, ("rc=%Rrc iPage=%#x GCPhys=%#x %s\n", rc, iPage, pRam->GCPhys, pRam->pszDesc), rc);
2532 for (uint32_t iPage = 0; iPage < cPages; /* incremented by inner loop */ )
2536 AssertLogRelMsgRCReturn(rc, ("rc=%Rrc iPage=%#x GCPhys=%#x %s\n", rc, iPage, pRam->GCPhys, pRam->pszDesc), rc);
2538 ("fPresent=%#x iPage=%#x GCPhys=%#x %s\n", fPresent, iPage, pRam->GCPhys, pRam->pszDesc),
2541 for (uint32_t iChunkPage = 0; iChunkPage < cPagesInChunk; iChunkPage++, iPage++)
2543 RTGCPHYS const GCPhysPage = ((RTGCPHYS)iPage << PAGE_SHIFT) + pRam->GCPhys;
2544 PPGMPAGE pPage = &pRam->aPages[iPage];
2555 AssertLogRelMsgRCReturn(rc, ("rc=%Rrc iPage=%#x GCPhysPage=%#x %s\n", rc, iPage, GCPhysPage, pRam->pszDesc), rc);
2604 for (uint32_t iPage = 0; iPage < cPages; iPage++)
2606 RTGCPHYS const GCPhysPage = ((RTGCPHYS)iPage << PAGE_SHIFT) + pRam->GCPhys;
2607 PPGMPAGE pPage = &pRam->aPages[iPage];
2613 AssertLogRelMsgRCReturn(rc, ("rc=%Rrc iPage=%#x GCPhys=%#x %s\n", rc, iPage, pRam->GCPhys, pRam->pszDesc), rc);
2646 uint32_t iPage = UINT32_MAX - 10;
2814 iPage++;
2818 rc = SSMR3GetU32(pSSM, &iPage);
2828 AssertLogRelMsgReturn(pMmio2, ("id=%#u iPage=%#x\n", id, iPage), VERR_PGM_SAVED_MMIO2_RANGE_NOT_FOUND);
2830 AssertLogRelMsgReturn(iPage < (pMmio2->RamRange.cb >> PAGE_SHIFT), ("iPage=%#x cb=%RGp %s\n", iPage, pMmio2->RamRange.cb, pMmio2->RamRange.pszDesc), VERR_PGM_SAVED_MMIO2_PAGE_NOT_FOUND);
2831 void *pvDstPage = (uint8_t *)pMmio2->RamRange.pvR3 + ((size_t)iPage << PAGE_SHIFT);
2860 iPage++;
2864 rc = SSMR3GetU32(pSSM, &iPage);
2874 AssertLogRelMsgReturn(pRom, ("id=%#u iPage=%#x\n", id, iPage), VERR_PGM_SAVED_ROM_RANGE_NOT_FOUND);
2876 AssertLogRelMsgReturn(iPage < (pRom->cb >> PAGE_SHIFT), ("iPage=%#x cb=%RGp %s\n", iPage, pRom->cb, pRom->pszDesc), VERR_PGM_SAVED_ROM_PAGE_NOT_FOUND);
2877 PPGMROMPAGE pRomPage = &pRom->aPages[iPage];
2878 GCPhys = pRom->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT);