Lines Matching defs:paLSPages

649         PPGMLIVESAVEMMIO2PAGE paLSPages = (PPGMLIVESAVEMMIO2PAGE)MMR3HeapAllocZ(pVM, MM_TAG_PGM, sizeof(PGMLIVESAVEMMIO2PAGE) * cPages);
650 if (!paLSPages)
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;
663 pMmio2->paLSPages = paLSPages;
877 PPGMLIVESAVEMMIO2PAGE paLSPages = pMmio2->paLSPages;
884 pgmR3ScanMmio2Page(pVM, pbPage, &paLSPages[iPage]);
919 PPGMLIVESAVEMMIO2PAGE paLSPages = pMmio2->paLSPages;
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;
976 PPGMLIVESAVEMMIO2PAGE paLSPages = pMmio2->paLSPages;
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;
1016 paLSPages[iPage].fDirty = false;
1048 void *pvMmio2ToFree = pMmio2->paLSPages;
1051 pMmio2->paLSPages = NULL;
1086 if ( !pCur->paLSPages
1092 PPGMLIVESAVERAMPAGE paLSPages = (PPGMLIVESAVERAMPAGE)MMR3HeapAllocZ(pVM, MM_TAG_PGM, cPages * sizeof(PGMLIVESAVERAMPAGE));
1093 if (!paLSPages)
1099 MMR3HeapFree(paLSPages);
1103 pCur->paLSPages = paLSPages;
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;
1261 * @param paLSPages The current array of live save page tracking
1265 static void pgmR3StateCalcCrc32ForRamPage(PVM pVM, PPGMRAMRANGE pCur, PPGMLIVESAVERAMPAGE paLSPages, uint32_t iPage)
1273 paLSPages[iPage].u32Crc = RTCrc32(pvPage, PAGE_SIZE);
1277 paLSPages[iPage].u32Crc = UINT32_MAX; /* Invalid */
1286 * @param paLSPages The current array of live save page tracking
1290 static void pgmR3StateVerifyCrc32ForPage(void const *pvPage, PPGMRAMRANGE pCur, PPGMLIVESAVERAMPAGE paLSPages, uint32_t iPage, const char *pszWhere)
1292 if (paLSPages[iPage].u32Crc != UINT32_MAX)
1298 AssertMsg(paLSPages[iPage].u32Crc == u32Crc,
1299 ("%08x != %08x for %RGp %R[pgmpage] %s\n", paLSPages[iPage].u32Crc, u32Crc,
1310 * @param paLSPages The current array of live save page tracking
1314 static void pgmR3StateVerifyCrc32ForRamPage(PVM pVM, PPGMRAMRANGE pCur, PPGMLIVESAVERAMPAGE paLSPages, uint32_t iPage, const char *pszWhere)
1316 if (paLSPages[iPage].u32Crc != UINT32_MAX)
1324 pgmR3StateVerifyCrc32ForPage(pvPage, pCur, paLSPages, iPage, pszWhere);
1354 PPGMLIVESAVERAMPAGE paLSPages = pCur->paLSPages;
1373 if (paLSPages[iPage].fIgnore)
1388 AssertMsg(paLSPages[iPage].fWriteMonitored,
1396 AssertMsg(!paLSPages[iPage].fWriteMonitored,
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;
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);
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)
1517 if (paLSPages[iPage].fDirty)
1522 if (paLSPages[iPage].fZero)
1569 PPGMLIVESAVERAMPAGE paLSPages = pCur->paLSPages;
1591 && paLSPages)
1593 if (!paLSPages[iPage].fDirty)
1595 if (paLSPages[iPage].fWriteMonitoredJustNow)
1597 if (paLSPages[iPage].fIgnore)
1602 != ( paLSPages[iPage].fZero
1604 : paLSPages[iPage].fShared
1613 if ( paLSPages
1614 && !paLSPages[iPage].fDirty
1615 && !paLSPages[iPage].fIgnore)
1619 pgmR3StateVerifyCrc32ForRamPage(pVM, pCur, paLSPages, iPage, "save#1");
1650 if (paLSPages)
1651 pgmR3StateVerifyCrc32ForPage(abPage, pCur, paLSPages, iPage, "save#3");
1710 if (paLSPages)
1711 pgmR3StateVerifyCrc32ForRamPage(pVM, pCur, paLSPages, iPage, "save#2");
1730 if (paLSPages)
1732 paLSPages[iPage].fDirty = 0;
1772 * paLSPages as an indicator of which RAM ranges which we need to scan for
1783 if (pCur->paLSPages)
1796 pvToFree = pCur->paLSPages;
1797 pCur->paLSPages = NULL;