VirtualBox

Changeset 10340 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jul 7, 2008 4:58:59 PM (16 years ago)
Author:
vboxsync
Message:

Pool flush handling updates

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

Legend:

Unmodified
Added
Removed
  • 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);
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