VirtualBox

Ignore:
Timestamp:
Feb 27, 2009 11:02:41 AM (16 years ago)
Author:
vboxsync
Message:

VBOX_WITH_PGMPOOL_PAGING_ONLY: deal with hypervisor mappings in guest pae pds that are not yet present

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAll.cpp

    r17179 r17195  
    902902            if (CPUMGetGuestCR4(pVM) & X86_CR4_PAE)
    903903            {
    904                 GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
    905                 enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;
     904                if (!pGstPdpe->n.u1Present)
     905                {
     906                    /* PD not present; guest must reload CR3 to change it.
     907                     * No need to monitor anything in this case.
     908                     */
     909                    Assert(!HWACCMIsEnabled(pVM));
     910
     911                    GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
     912                    enmKind = PGMPOOLKIND_PAE_PD_PHYS;
     913                    pGstPdpe->n.u1Present = 1;
     914                }
     915                else
     916                {
     917                    GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
     918                    enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;
     919                }
    906920            }
    907921            else
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