VirtualBox

Changeset 10340

Show
Ignore:
Timestamp:
07/07/08 18:58:59 (5 months ago)
Author:
vboxsync
Message:

Pool flush handling updates

Files:

Legend:

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

    r10336 r10340  
    756756        { 
    757757            Assert(pVM->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL); 
    758             rc = pgmPoolSyncCR3(pVM); 
     758            VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); 
     759            return VINF_PGM_SYNC_CR3; 
    759760        } 
    760761        AssertRCReturn(rc, rc); 
     
    851852        { 
    852853            Assert(pVM->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL); 
    853             rc = pgmPoolSyncCR3(pVM); 
     854            VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); 
     855            return VINF_PGM_SYNC_CR3; 
    854856        } 
    855857        AssertRCReturn(rc, rc); 
     
    891893        { 
    892894            Assert(pVM->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL); 
    893             rc = pgmPoolSyncCR3(pVM); 
     895            VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); 
     896            return VINF_PGM_SYNC_CR3; 
    894897        } 
    895898        AssertRCReturn(rc, rc); 
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r10323 r10340  
    23542354        else if (rc == VERR_PGM_POOL_FLUSHED) 
    23552355        { 
    2356             VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */ 
     2356            VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); 
    23572357            return VINF_PGM_SYNC_CR3; 
    23582358        } 
  • trunk/src/VBox/VMM/VMMAll/PGMAllGst.h

    r10326 r10340  
    492492 
    493493                Assert(!(GCPhysCR3 >> (PAGE_SHIFT + 32))); 
     494try_again: 
    494495                rc = pgmPoolAlloc(pVM, GCPhysCR3, PGMPOOLKIND_64BIT_PML4_FOR_64BIT_PML4, PGMPOOL_IDX_AMD64_CR3, GCPhysCR3 >> PAGE_SHIFT, &pVM->pgm.s.pHCShwAmd64CR3); 
    495496                if (rc == VERR_PGM_POOL_FLUSHED) 
     
    498499                    rc = pgmPoolSyncCR3(pVM); 
    499500                    AssertRC(rc); 
     501                    goto try_again; 
    500502                } 
    501503                pVM->pgm.s.pHCPaePML4    = (PX86PML4)PGMPOOL_PAGE_2_PTR(pPool->CTXSUFF(pVM), pVM->pgm.s.pHCShwAmd64CR3); 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy