VirtualBox

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


Ignore:
Timestamp:
Apr 17, 2009 12:13:30 PM (16 years ago)
Author:
vboxsync
Message:

Fixed virtual handler update regression.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMHandler.cpp

    r18927 r18986  
    393393                PVMCPU pVCpu = &pVM->aCpus[i];
    394394
    395                 pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_UPDATE_PAGE_BIT_VIRTUAL | PGM_SYNC_CLEAR_PGM_POOL;
     395                pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_UPDATE_PAGE_BIT_VIRTUAL;
    396396                VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3);
    397397            }
     398            pVM->pgm.s.fGlobalSyncFlags |= PGM_GLOBAL_SYNC_CLEAR_PGM_POOL;
    398399        }
    399400        pgmUnlock(pVM);
     
    478479            PVMCPU pVCpu = &pVM->aCpus[i];
    479480
    480             pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_UPDATE_PAGE_BIT_VIRTUAL | PGM_SYNC_CLEAR_PGM_POOL;
     481            pVCpu->pgm.s.fSyncFlags |= PGM_SYNC_UPDATE_PAGE_BIT_VIRTUAL;
    481482            VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3);
    482483        }
     484        pVM->pgm.s.fGlobalSyncFlags |= PGM_GLOBAL_SYNC_CLEAR_PGM_POOL;
    483485    }
    484486    else
  • trunk/src/VBox/VMM/PGMInternal.h

    r18984 r18986  
    28702870#define PGM_SYNC_MAP_CR3                        RT_BIT(3)
    28712871/** Clear the page pool (a light weight flush). */
    2872 #define PGM_SYNC_CLEAR_PGM_POOL                 RT_BIT(8)
     2872#define PGM_GLOBAL_SYNC_CLEAR_PGM_POOL          RT_BIT(8)
    28732873/** @} */
    28742874
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r18984 r18986  
    17221722         * the heap size should suffice. */
    17231723        AssertFatalRC(rc);
    1724         Assert(!(pVM->pgm.s.fGlobalSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) || VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3));
     1724        Assert(!(pVM->pgm.s.fGlobalSyncFlags & PGM_GLOBAL_SYNC_CLEAR_PGM_POOL) || VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3));
    17251725    }
    17261726    pPage->fMonitored = true;
     
    18191819        rc = PGMHandlerPhysicalDeregister(pVM, pPage->GCPhys & ~(RTGCPHYS)(PAGE_SIZE - 1));
    18201820        AssertFatalRC(rc);
    1821         AssertMsg(!(pVM->pgm.s.fGlobalSyncFlags & PGM_SYNC_CLEAR_PGM_POOL) || VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3),
     1821        AssertMsg(!(pVM->pgm.s.fGlobalSyncFlags & PGM_GLOBAL_SYNC_CLEAR_PGM_POOL) || VM_FF_ISSET(pVM, VM_FF_PGM_SYNC_CR3),
    18221822                  ("%#x %#x\n", pVM->pgm.s.fGlobalSyncFlags, pVM->fForcedActions));
    18231823    }
     
    20702070     * sometimes refered to as a 'lightweight flush'.
    20712071     */
    2072     if (!(pVM->pgm.s.fGlobalSyncFlags & PGM_SYNC_CLEAR_PGM_POOL))
     2072    if (!(pVM->pgm.s.fGlobalSyncFlags & PGM_GLOBAL_SYNC_CLEAR_PGM_POOL))
    20732073        pgmPoolMonitorModifiedClearAll(pVM);
    20742074    else
     
    20772077        /** @todo SMP support! */
    20782078        Assert(pVM->cCPUs == 1);
    2079         pVM->pgm.s.fGlobalSyncFlags &= ~PGM_SYNC_CLEAR_PGM_POOL;
     2079        pVM->pgm.s.fGlobalSyncFlags &= ~PGM_GLOBAL_SYNC_CLEAR_PGM_POOL;
    20802080        pgmPoolClearAll(pVM);
    20812081# else  /* !IN_RING3 */
    2082         LogFlow(("SyncCR3: PGM_SYNC_CLEAR_PGM_POOL is set -> VINF_PGM_SYNC_CR3\n"));
     2082        LogFlow(("SyncCR3: PGM_GLOBAL_SYNC_CLEAR_PGM_POOL is set -> VINF_PGM_SYNC_CR3\n"));
    20832083        VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3); /** @todo no need to do global sync, right? */
    20842084        return VINF_PGM_SYNC_CR3;
     
    27132713    if (rc == VINF_PGM_GCPHYS_ALIASED)
    27142714    {
    2715         pVM->pgm.s.fGlobalSyncFlags |= PGM_SYNC_CLEAR_PGM_POOL;
     2715        pVM->pgm.s.fGlobalSyncFlags |= PGM_GLOBAL_SYNC_CLEAR_PGM_POOL;
    27162716        VM_FF_SET(pVM, VM_FF_PGM_SYNC_CR3);
    27172717        rc = VINF_PGM_SYNC_CR3;
     
    42074207    /** @todo CSAM/PGMPrefetchPage messes up here during CSAMR3CheckGates
    42084208     *  (TRPMR3SyncIDT) because of FF priority. Try fix that?
    4209      *  Assert(!(pVM->pgm.s.fGlobalSyncFlags & PGM_SYNC_CLEAR_PGM_POOL)); */
     4209     *  Assert(!(pVM->pgm.s.fGlobalSyncFlags & PGM_GLOBAL_SYNC_CLEAR_PGM_POOL)); */
    42104210
    42114211#ifdef PGMPOOL_WITH_CACHE
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