VirtualBox

Changeset 17591 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Mar 9, 2009 4:58:49 PM (16 years ago)
Author:
vboxsync
Message:

Better to allocate the hypervisor region in guest PDPEs that exist already.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

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

    r17589 r17591  
    914914            if (CPUMGetGuestCR4(pVM) & X86_CR4_PAE)
    915915            {
    916                 if (!pGstPdpe->n.u1Present)
    917                 {
    918                     /* PD not present; guest must reload CR3 to change it.
    919                      * No need to monitor anything in this case.
    920                      */
    921                     Assert(!HWACCMIsEnabled(pVM));
    922 
    923                     GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
    924                     enmKind = PGMPOOLKIND_PAE_PD_PHYS;
    925                     pGstPdpe->n.u1Present = 1;
    926                 }
    927                 else
    928                 {
    929                     GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
    930                     enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;
    931                 }
     916                Assert(pGstPdpe->n.u1Present);
     917                GCPdPt  = pGstPdpe->u & X86_PDPE_PG_MASK;
     918                enmKind = PGMPOOLKIND_PAE_PD_FOR_PAE_PD;
    932919            }
    933920            else
     
    935922                GCPdPt  = CPUMGetGuestCR3(pVM);
    936923                enmKind = (PGMPOOLKIND)(PGMPOOLKIND_PAE_PD0_FOR_32BIT_PD + iPdPt);
     924                Assert(pGstPdpe->n.u1Present);
    937925            }
    938926        }
  • trunk/src/VBox/VMM/VMMAll/PGMAllMap.cpp

    r17586 r17591  
    283283                        PX86PDPE pGstPdpe;
    284284                        pGstPdpe = pgmGstGetPaePDPEPtr(&pVM->pgm.s, (iPdPt << X86_PDPT_SHIFT));
    285                         if (pGstPdpe)
    286                             GstPdpe = *pGstPdpe;
    287                         else
    288                             GstPdpe.u = X86_PDPE_P;   /* rw/us are reserved for PAE pdpte's; accessed bit causes invalid VT-x guest state errors */
     285                        AssertFatal(pGstPdpe);
     286                        GstPdpe = *pGstPdpe;
    289287                    }
    290288                    int rc = pgmShwSyncPaePDPtr(pVM, (iPdPt << X86_PDPT_SHIFT), &GstPdpe, &pShwPaePd);
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