Changeset 60869 in vbox
- Timestamp:
- May 6, 2016 9:15:35 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 107079
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/VMM/VMMR3/PGMMap.cpp ¶
r60846 r60869 1227 1227 STAM_PROFILE_STOP(&pVM->pgm.s.CTX_SUFF(pStats)->StatR3ResolveConflict, a); 1228 1228 #ifdef DEBUG_bird 1229 /* 1230 * Ended up here frequently recently with an NT4.0 VM (using SMP kernel). 1231 * 1232 * The problem is when enabling large pages (i.e. updating CR4) using the 1233 * _Ki386EnableCurrentLargePage@8 assembly routine (address 0x801c97ad-9). 1234 * The routine loads a sparsely popuplated page tables with identiy mappings 1235 * of its own code, most entries are whatever ExAllocatePool returned, which 1236 * is documented as undefined but all 0xffffffff in this case. Once loaded, 1237 * it jumps to the physical code address, disables paging, set CR4.PSE=1, 1238 * re-enables paging, restore the original page table and returns successfully. 1239 * 1240 * Theory: if CSAM/PATM patches the pushf;cli;mov eax,cr3; sequence, at the 1241 * start of that function we're apparently in trouble, if CSAM/PATM doesn't 1242 * we're switching back to REM and doing disabling of paging there instead. 1243 * 1244 * Normal PD: CR3=00030000; Problematic identity mapped PD: CR3=0x5fa000. 1245 */ 1229 1246 DBGFSTOP(pVM); 1230 1247 #endif
Note:
See TracChangeset
for help on using the changeset viewer.