VirtualBox

Changeset 60869 in vbox


Ignore:
Timestamp:
May 6, 2016 9:15:35 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
107079
Message:

pgmR3SyncPTResolveConflict: some debugging details for the NT4.0-SMP VM.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/VBox/VMM/VMMR3/PGMMap.cpp

    r60846 r60869  
    12271227    STAM_PROFILE_STOP(&pVM->pgm.s.CTX_SUFF(pStats)->StatR3ResolveConflict, a);
    12281228#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     */
    12291246    DBGFSTOP(pVM);
    12301247#endif
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette