VirtualBox

Ignore:
Timestamp:
Jun 13, 2008 1:36:36 PM (17 years ago)
Author:
vboxsync
Message:

Always sync PML4E & PDPE.

File:
1 edited

Legend:

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

    r9682 r9685  
    756756
    757757        AssertRCReturn(rc, rc);
    758 
    759         /* The PDPT was cached or created; hook it up now. */
    760         pPml4e->u |=   pShwPage->Core.Key
    761                     | (pGstPml4e->u & ~(X86_PML4E_PG_MASK | X86_PML4E_AVL_MASK | X86_PML4E_PCD | X86_PML4E_PWT));
    762758    }
    763759    else
    764760    {
    765         AssertMsg((pGstPml4e->u & (X86_PML4E_P | X86_PML4E_RW | X86_PML4E_US | X86_PML4E_NX)) == (pPml4e->u & (X86_PML4E_P | X86_PML4E_RW | X86_PML4E_US | X86_PML4E_NX)), ("pGstMpl4e.u=%RX64 pPml4e->u=%RX64\n", pGstPml4e->u, pPml4e->u));
    766 
    767761        pShwPage = pgmPoolGetPage(pPool, pPml4e->u & X86_PML4E_PG_MASK);
    768762        AssertReturn(pShwPage, VERR_INTERNAL_ERROR);
    769763    }
     764    /* The PDPT was cached or created; hook it up now. */
     765    pPml4e->u |=   pShwPage->Core.Key
     766                | (pGstPml4e->u & ~(X86_PML4E_PG_MASK | X86_PML4E_AVL_MASK | X86_PML4E_PCD | X86_PML4E_PWT));
    770767
    771768    const unsigned iPdPt = (GCPtr >> X86_PDPT_SHIFT) & X86_PDPT_MASK_AMD64;
     
    787784
    788785        AssertRCReturn(rc, rc);
    789 
    790         /* The PD was cached or created; hook it up now. */
    791         pPdpe->u |=    pShwPage->Core.Key
    792                     | (pGstPdpe->u & ~(X86_PDPE_PG_MASK | X86_PDPE_AVL_MASK | X86_PDPE_PCD | X86_PDPE_PWT));
    793786    }
    794787    else
    795788    {
    796         AssertMsg((pGstPdpe->u & (X86_PDPE_P | X86_PDPE_RW | X86_PDPE_US | X86_PDPE_NX)) == (pPdpe->u & (X86_PDPE_P | X86_PDPE_RW | X86_PDPE_US | X86_PDPE_NX)), ("pGstPdpe.u=%RX64 pPdpe->u=%RX64\n", pGstPdpe->u, pPdpe->u));
    797 
    798789        pShwPage = pgmPoolGetPage(pPool, pPdpe->u & X86_PDPE_PG_MASK);
    799790        AssertReturn(pShwPage, VERR_INTERNAL_ERROR);
    800791    }
     792    /* The PD was cached or created; hook it up now. */
     793    pPdpe->u |=    pShwPage->Core.Key
     794                | (pGstPdpe->u & ~(X86_PDPE_PG_MASK | X86_PDPE_AVL_MASK | X86_PDPE_PCD | X86_PDPE_PWT));
    801795
    802796    *ppPD = (PX86PDPAE)PGMPOOL_PAGE_2_PTR(pVM, pShwPage);
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