VirtualBox

Changeset 17127 in vbox for trunk


Ignore:
Timestamp:
Feb 25, 2009 1:15:26 PM (16 years ago)
Author:
vboxsync
Message:

VBOX_WITH_PGMPOOL_PAGING_ONLY: careful with flushing of root pages

File:
1 edited

Legend:

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

    r17120 r17127  
    14751475     * Reject any attempts at flushing the currently active shadow CR3 mapping
    14761476     */
     1477#ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     1478    if (pgmPoolIsActiveRootPage(pVM, pPage))
     1479#else
    14771480    if (PGMGetHyperCR3(pPool->CTX_SUFF(pVM)) == pPage->Core.Key)
     1481#endif
    14781482    {
    14791483        /* Refresh the cr3 mapping by putting it at the head of the age list. */
     
    31503154
    31513155    /* Safety precaution in case we change the paging for other modes too in the future. */
     3156#ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     3157    Assert(!pgmPoolIsActiveRootPage(pVM, pPage));
     3158#else
    31523159    Assert(PGMGetHyperCR3(pPool->CTX_SUFF(pVM)) != pPage->Core.Key);
     3160#endif
    31533161
    31543162#ifdef VBOX_STRICT
     
    43494357     * Quietly reject any attempts at flushing the currently active shadow CR3 mapping
    43504358     */
    4351     if (PGMGetHyperCR3(pPool->CTX_SUFF(pVM)) == pPage->Core.Key)
    4352     {
    43534359#ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     4360    if (pgmPoolIsActiveRootPage(pVM, pPage))
     4361    {
    43544362        AssertMsg(   pPage->enmKind == PGMPOOLKIND_64BIT_PML4
    43554363                  || pPage->enmKind == PGMPOOLKIND_PAE_PDPT
    43564364                  || pPage->enmKind == PGMPOOLKIND_PAE_PDPT_FOR_32BIT
    43574365                  || pPage->enmKind == PGMPOOLKIND_32BIT_PD,
     4366                  || pPage->enmKind == PGMPOOLKIND_PAE_PD0_FOR_32BIT_PD
     4367                  || pPage->enmKind == PGMPOOLKIND_PAE_PD1_FOR_32BIT_PD
     4368                  || pPage->enmKind == PGMPOOLKIND_PAE_PD2_FOR_32BIT_PD
     4369                  || pPage->enmKind == PGMPOOLKIND_PAE_PD3_FOR_32BIT_PD,
    43584370                  ("Can't free the shadow CR3! (%RHp vs %RHp kind=%d\n", PGMGetHyperCR3(pPool->CTX_SUFF(pVM)), pPage->Core.Key, pPage->enmKind));
    43594371#else
     4372    if (PGMGetHyperCR3(pPool->CTX_SUFF(pVM)) == pPage->Core.Key)
     4373    {
    43604374        AssertMsg(pPage->enmKind == PGMPOOLKIND_64BIT_PML4,
    43614375                  ("Can't free the shadow CR3! (%RHp vs %RHp kind=%d\n", PGMGetHyperCR3(pPool->CTX_SUFF(pVM)), pPage->Core.Key, pPage->enmKind));
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