- Timestamp:
- Mar 25, 2024 6:30:19 AM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162420
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r103261 r104032 4790 4790 } 4791 4791 4792 4793 /** 4794 * Clear references to shadowed pages in a SLAT EPT PML4 table. 4795 * 4796 * @param pPool The pool. 4797 * @param pPage The page. 4798 * @param pShwPml4 The shadow PML4 table. 4799 */ 4800 DECLINLINE(void) pgmPoolTrackDerefNestedPML4(PPGMPOOL pPool, PPGMPOOLPAGE pPage, PEPTPML4 pShwPml4) 4801 { 4802 Assert(PGMPOOL_PAGE_IS_NESTED(pPage)); 4803 for (unsigned i = 0; i < RT_ELEMENTS(pShwPml4->a); i++) 4804 { 4805 X86PGPAEUINT const uPml4e = pShwPml4->a[i].u; 4806 AssertMsg((uPml4e & (EPT_PML4E_MBZ_MASK | 0xfff0000000000f00)) == 0, ("uPml4e=%RX64\n", uPml4e)); 4807 if (uPml4e & EPT_PRESENT_MASK) 4808 { 4809 PPGMPOOLPAGE pSubPage = (PPGMPOOLPAGE)RTAvloHCPhysGet(&pPool->HCPhysTree, uPml4e & EPT_PML4E_PG_MASK); 4810 if (pSubPage) 4811 pgmPoolTrackFreeUser(pPool, pSubPage, pPage->idx, i); 4812 else 4813 AssertFatalMsgFailed(("%RX64\n", uPml4e & X86_PML4E_PG_MASK)); 4814 } 4815 } 4816 } 4792 4817 #endif /* VBOX_WITH_NESTED_HWVIRT_VMX_EPT */ 4793 4818 … … 5137 5162 case PGMPOOLKIND_EPT_PDPT_FOR_EPT_PDPT: 5138 5163 pgmPoolTrackDerefPDPTEPT(pPool, pPage, (PEPTPDPT)pvShw); 5164 break; 5165 5166 case PGMPOOLKIND_EPT_PML4_FOR_EPT_PML4: 5167 pgmPoolTrackDerefNestedPML4(pPool, pPage, (PEPTPML4)pvShw); 5139 5168 break; 5140 5169 #endif
Note:
See TracChangeset
for help on using the changeset viewer.