Changeset 10026 in vbox for trunk/src/VBox
- Timestamp:
- Jun 30, 2008 4:37:01 PM (17 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PGMInternal.h
r10021 r10026 1369 1369 /** Shw: 64-bit page directory pointer table; Gst: 64-bit page directory pointer table. */ 1370 1370 PGMPOOLKIND_64BIT_PDPT_FOR_64BIT_PDPT, 1371 /** Shw: 64-bit page directory pointer table; Gst: no paging */ 1372 PGMPOOLKIND_64BIT_PDPT_FOR_PHYS, 1371 1373 /** Shw: 64-bit page directory table; Gst: 64-bit page directory table. */ 1372 1374 PGMPOOLKIND_64BIT_PD_FOR_64BIT_PD, 1375 /** Shw: 64-bit page directory table; Gst: no paging */ 1376 PGMPOOLKIND_64BIT_PD_FOR_PHYS, 1373 1377 1374 1378 /** Shw: 64-bit PML4; Gst: 64-bit PML4. */ 1375 1379 PGMPOOLKIND_64BIT_PML4_FOR_64BIT_PML4, 1380 /** Shw: 64-bit PML4; Gst: no paging */ 1381 PGMPOOLKIND_64BIT_PML4_FOR_PHYS, 1376 1382 1377 1383 /** Shw: Root 32-bit page directory. */ -
trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
r10021 r10026 823 823 PPGMPOOLPAGE pShwPage; 824 824 int rc; 825 826 AssertReturn(pVM->pgm.s.pHCPaePML4, VERR_INTERNAL_ERROR); 825 PGMPOOLKIND enmPdpt, enmPd; 826 827 AssertReturn(pVM->pgm.s.pHCPaePML4 && pVM->pgm.s.pHCShwAmd64CR3, VERR_INTERNAL_ERROR); 828 829 if (HWACCMIsNestedPagingActive(pVM)) 830 { 831 enmPdpt = PGMPOOLKIND_64BIT_PDPT_FOR_PHYS; 832 enmPd = PGMPOOLKIND_64BIT_PD_FOR_PHYS; 833 } 834 else 835 { 836 enmPdpt = PGMPOOLKIND_64BIT_PDPT_FOR_64BIT_PDPT; 837 enmPd = PGMPOOLKIND_64BIT_PD_FOR_64BIT_PD; 838 } 827 839 828 840 Assert(pVM->pgm.s.pHCPaePML4); … … 835 847 836 848 Assert(!(pPml4e->u & X86_PML4E_PG_MASK)); 837 rc = pgmPoolAlloc(pVM, pPml4eGst->u & X86_PML4E_PG_MASK, PGMPOOLKIND_64BIT_PDPT_FOR_64BIT_PDPT, pVM->pgm.s.pHCShwAmd64CR3->idx, iPml4e, &pShwPage);849 rc = pgmPoolAlloc(pVM, pPml4eGst->u & X86_PML4E_PG_MASK, enmPdpt, pVM->pgm.s.pHCShwAmd64CR3->idx, iPml4e, &pShwPage); 838 850 if (rc == VERR_PGM_POOL_FLUSHED) 839 851 return VINF_PGM_SYNC_CR3; … … 865 877 Assert(!(pPdpe->u & X86_PDPE_PG_MASK)); 866 878 /* Create a reference back to the PDPT by using the index in its shadow page. */ 867 rc = pgmPoolAlloc(pVM, pPdptGst->a[iPdPt].u & X86_PDPE_PG_MASK, PGMPOOLKIND_64BIT_PD_FOR_64BIT_PD, pShwPage->idx, iPdPt, &pShwPage);879 rc = pgmPoolAlloc(pVM, pPdptGst->a[iPdPt].u & X86_PDPE_PG_MASK, enmPd, pShwPage->idx, iPdPt, &pShwPage); 868 880 if (rc == VERR_PGM_POOL_FLUSHED) 869 881 return VINF_PGM_SYNC_CR3; -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r9993 r10026 1054 1054 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 1055 1055 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 1056 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 1057 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 1058 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 1056 1059 return true; 1057 1060 … … 1074 1077 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 1075 1078 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 1079 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 1080 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 1081 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 1076 1082 return true; 1077 1083 default: … … 1097 1103 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 1098 1104 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 1105 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 1106 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 1107 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 1099 1108 return true; 1100 1109 default: … … 1318 1327 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 1319 1328 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 1329 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 1330 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 1331 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 1320 1332 break; 1321 1333 default: … … 1364 1376 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 1365 1377 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 1378 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 1379 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 1380 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 1366 1381 /* Nothing to monitor here. */ 1367 1382 return VINF_SUCCESS; … … 1446 1461 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 1447 1462 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 1463 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 1464 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 1465 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 1448 1466 /* Nothing to monitor here. */ 1449 1467 return VINF_SUCCESS; … … 2134 2152 case PGMPOOLKIND_ROOT_PAE_PD: 2135 2153 case PGMPOOLKIND_ROOT_PDPT: 2154 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 2155 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 2156 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 2136 2157 return 8; 2137 2158 … … 2175 2196 case PGMPOOLKIND_32BIT_PT_FOR_PHYS: 2176 2197 case PGMPOOLKIND_PAE_PT_FOR_PHYS: 2198 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 2199 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 2200 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 2177 2201 /** @todo can we return 0? (nobody is calling this...) */ 2202 AssertFailed(); 2178 2203 return 0; 2179 2204 … … 3164 3189 case PGMPOOLKIND_PAE_PD_FOR_PAE_PD: 3165 3190 case PGMPOOLKIND_64BIT_PD_FOR_64BIT_PD: 3191 case PGMPOOLKIND_64BIT_PD_FOR_PHYS: 3166 3192 pgmPoolTrackDerefPDPae(pPool, pPage, (PX86PDPAE)pvShw); 3167 3193 break; 3168 3194 3195 case PGMPOOLKIND_64BIT_PDPT_FOR_PHYS: 3169 3196 case PGMPOOLKIND_64BIT_PDPT_FOR_64BIT_PDPT: 3170 3197 pgmPoolTrackDerefPDPT64Bit(pPool, pPage, (PX86PDPT)pvShw); … … 3172 3199 3173 3200 case PGMPOOLKIND_64BIT_PML4_FOR_64BIT_PML4: 3201 case PGMPOOLKIND_64BIT_PML4_FOR_PHYS: 3174 3202 pgmPoolTrackDerefPML464Bit(pPool, pPage, (PX86PML4)pvShw); 3175 3203 break;
Note:
See TracChangeset
for help on using the changeset viewer.