Changeset 22718 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 2, 2009 2:20:11 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMPool.cpp
r22717 r22718 637 637 { 638 638 PPGMPOOLPAGE pPage = &pPool->aPages[i]; 639 bool fFirstMsg = true; 639 640 640 641 /* Todo: cover other paging modes too. */ … … 655 656 || (pShwPT->a[j].u & X86_PTE_PAE_PG_MASK) != HCPhys) 656 657 { 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); 658 if (fFirstMsg) 659 { 660 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Check pool page %RGp\n", pPage->GCPhys); 661 fFirstMsg = false; 662 } 663 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Mismatch HCPhys: rc=%d idx=%d guest %RX64 shw=%RX64 vs %RHp\n", rc, j, pGstPT->a[j].u, pShwPT->a[j].u, HCPhys); 658 664 } 659 665 } … … 664 670 rc = PGMPhysGCPhys2HCPhys(pPool->CTX_SUFF(pVM), pPage->GCPhys, &HCPhysPT); 665 671 AssertRC(rc); 666 667 for (unsigned j = 0; j < pPool->cCurPages; j++) 672 if (rc == VINF_SUCCESS) 668 673 { 669 PPGMPOOLPAGE pTempPage = &pPool->aPages[j]; 670 671 if (pTempPage->enmKind == PGMPOOLKIND_PAE_PT_FOR_PAE_PT) 674 for (unsigned j = 0; j < pPool->cCurPages; j++) 672 675 { 673 P X86PTPAE pShwPT2 = (PX86PTPAE)PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pTempPage);674 675 for (unsigned k = 0; k < RT_ELEMENTS(pShwPT->a); k++)676 PPGMPOOLPAGE pTempPage = &pPool->aPages[j]; 677 678 if (pTempPage->enmKind == PGMPOOLKIND_PAE_PT_FOR_PAE_PT) 676 679 { 677 if ( pShwPT2->a[k].n.u1Present 678 && pShwPT2->a[k].n.u1Write 680 PX86PTPAE pShwPT2 = (PX86PTPAE)PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pTempPage); 681 682 for (unsigned k = 0; k < RT_ELEMENTS(pShwPT->a); k++) 683 { 684 if ( pShwPT2->a[k].n.u1Present 685 && pShwPT2->a[k].n.u1Write 679 686 # ifdef PGMPOOL_WITH_OPTIMIZED_DIRTY_PT 680 && !pPage->fDirty687 && !pPage->fDirty 681 688 # endif 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); 689 && ((pShwPT2->a[k].u & X86_PTE_PAE_PG_MASK) == HCPhysPT)) 690 { 691 if (fFirstMsg) 692 { 693 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Check pool page %RGp\n", pPage->GCPhys); 694 fFirstMsg = false; 695 } 696 pCmdHlp->pfnPrintf(pCmdHlp, NULL, "Mismatch: r/w: GCPhys=%RGp idx=%d shw %RX64 %RX64\n", pTempPage->GCPhys, k, pShwPT->a[k].u, pShwPT2->a[k].u); 697 } 685 698 } 686 699 } 687 700 } 688 701 } 689 690 702 } 691 703 }
Note:
See TracChangeset
for help on using the changeset viewer.