Changeset 22717 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 2, 2009 2:00:25 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMPool.cpp
r22716 r22717 645 645 int rc = PGM_GCPHYS_2_PTR(pPool->CTX_SUFF(pVM), pPage->GCPhys, &pGstPT); AssertReleaseRC(rc); 646 646 647 /* Check if any PTEs are out of sync. */ 647 648 for (unsigned j = 0; j < RT_ELEMENTS(pShwPT->a); j++) 648 649 { … … 656 657 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Pool check: rc=%d idx=%d guest %RX64 shw=%RX64 vs %RHp\n", rc, j, pGstPT->a[j].u, pShwPT->a[j].u, HCPhys); 657 658 } 658 else 659 if ( pShwPT->a[j].n.u1Write 659 } 660 } 661 662 /* Make sure this page table can't be written to from any shadow mapping. */ 663 RTHCPHYS HCPhysPT = -1; 664 rc = PGMPhysGCPhys2HCPhys(pPool->CTX_SUFF(pVM), pPage->GCPhys, &HCPhysPT); 665 AssertRC(rc); 666 667 for (unsigned j = 0; j < pPool->cCurPages; j++) 668 { 669 PPGMPOOLPAGE pTempPage = &pPool->aPages[j]; 670 671 if (pTempPage->enmKind == PGMPOOLKIND_PAE_PT_FOR_PAE_PT) 672 { 673 PX86PTPAE pShwPT2 = (PX86PTPAE)PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pTempPage); 674 675 for (unsigned k = 0; k < RT_ELEMENTS(pShwPT->a); k++) 676 { 677 if ( pShwPT2->a[k].n.u1Present 678 && pShwPT2->a[k].n.u1Write 660 679 # ifdef PGMPOOL_WITH_OPTIMIZED_DIRTY_PT 661 && !pPage->fDirty680 && !pPage->fDirty 662 681 # endif 663 ) 664 { 665 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Pool check r/w: rc=%d idx=%d guest %RX64 shw=%RX64 vs %RHp\n", rc, j, pGstPT->a[j].u, pShwPT->a[j].u, HCPhys); 682 && ((pShwPT2->a[k].u & X86_PTE_PAE_PG_MASK) == HCPhysPT)) 683 { 684 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Pool check r/w: GCPhys=%RGp idx=%d shw %RX64 %RX64\n", pTempPage->GCPhys, k, pShwPT->a[k].u, pShwPT2->a[k].u); 685 } 666 686 } 667 687 } 668 688 } 689 669 690 } 670 691 }
Note:
See TracChangeset
for help on using the changeset viewer.