VirtualBox

Changeset 10321 in vbox


Ignore:
Timestamp:
Jul 7, 2008 1:38:02 PM (16 years ago)
Author:
vboxsync
Message:

Deal with pool flushes directly when possible.

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

Legend:

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

    r10299 r10321  
    754754        rc = pgmPoolAlloc(pVM, pPdptGst->u & X86_PDPE_PG_MASK, PGMPOOLKIND_PAE_PD_FOR_PAE_PD, PGMPOOL_IDX_PDPT, iPdPt, &pShwPage);
    755755        if (rc == VERR_PGM_POOL_FLUSHED)
    756             return VINF_PGM_SYNC_CR3;
     756        {
     757            Assert(pVM->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL);
     758            pgmPoolSyncCR3(pVM);
     759        }
    757760
    758761        AssertRCReturn(rc, rc);
     
    847850
    848851        if (rc == VERR_PGM_POOL_FLUSHED)
    849             return VINF_PGM_SYNC_CR3;
    850 
     852        {
     853            Assert(pVM->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL);
     854            pgmPoolSyncCR3(pVM);
     855        }
    851856        AssertRCReturn(rc, rc);
    852857    }
     
    885890
    886891        if (rc == VERR_PGM_POOL_FLUSHED)
    887             return VINF_PGM_SYNC_CR3;
    888 
     892        {
     893            Assert(pVM->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL);
     894            pgmPoolSyncCR3(pVM);
     895        }
    889896        AssertRCReturn(rc, rc);
    890897    }
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r10320 r10321  
    163163    if (rc != VINF_SUCCESS)
    164164    {
    165         AssertMsg(rc == VINF_PGM_SYNC_CR3, ("Unexpected rc=%Vrc\n", rc));
     165        AssertRC(rc);
    166166        return rc;
    167167    }
     
    22332233    if (rc != VINF_SUCCESS)
    22342234    {
    2235         AssertMsg(rc == VINF_PGM_SYNC_CR3, ("Unexpected rc=%Vrc\n", rc));
     2235        AssertRC(rc);
    22362236        return rc;
    22372237    }
     
    23532353        }
    23542354        else if (rc == VERR_PGM_POOL_FLUSHED)
     2355        {
     2356            VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */
    23552357            return VINF_PGM_SYNC_CR3;
     2358        }
    23562359        else
    23572360            AssertMsgFailedReturn(("rc=%Vrc\n", rc), VERR_INTERNAL_ERROR);
     
    26202623    if (rc != VINF_SUCCESS)
    26212624    {
    2622         AssertMsg(rc == VINF_PGM_SYNC_CR3, ("Unexpected rc=%Vrc\n", rc));
     2625        AssertRC(rc);
    26232626        return rc;
    26242627    }
     
    27582761        if (rc != VINF_SUCCESS)
    27592762        {
    2760             AssertMsg(rc == VINF_PGM_SYNC_CR3, ("Unexpected rc=%Vrc\n", rc));
     2763            AssertRC(rc);
    27612764            return rc;
    27622765        }
     
    28772880    if (rc != VINF_SUCCESS)
    28782881    {
    2879         AssertMsg(rc == VINF_PGM_SYNC_CR3, ("Unexpected rc=%Vrc\n", rc));
     2882        AssertRC(rc);
    28802883        return rc;
    28812884    }
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r10320 r10321  
    18901890# else
    18911891        LogFlow(("SyncCR3: PGM_SYNC_CLEAR_PGM_POOL is set -> VINF_PGM_SYNC_CR3\n"));
     1892        VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */
    18921893        return VINF_PGM_SYNC_CR3;
    18931894# 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