VirtualBox

Changeset 22137 in vbox for trunk/src


Ignore:
Timestamp:
Aug 10, 2009 2:05:44 PM (15 years ago)
Author:
vboxsync
Message:

PGM: Relocate pSelfRC of the MMIO2 ram ranges since unmapped ones will otherwise not be updated. Fixes #4195.

File:
1 edited

Legend:

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

    r21994 r22137  
    680680    { "pgmerror",      0, 1,        &g_aPgmErrorArgs[0],      1,            NULL,               0,          pgmR3CmdError,      "",                     "Enables inject runtime of errors into parts of PGM." },
    681681    { "pgmerroroff",   0, 1,        &g_aPgmErrorArgs[0],      1,            NULL,               0,          pgmR3CmdError,      "",                     "Disables inject runtime errors into parts of PGM." },
    682 #ifdef VBOX_STRICT                                           
     682#ifdef VBOX_STRICT
    683683    { "pgmassertcr3",  0, 0,        NULL,                     0,            NULL,               0,          pgmR3CmdAssertCR3,  "",                     "Check the shadow CR3 mapping." },
    684 #endif                                                       
     684#endif
    685685    { "pgmsyncalways", 0, 0,        NULL,                     0,            NULL,               0,          pgmR3CmdSyncAlways, "",                     "Toggle permanent CR3 syncing." },
    686686    { "pgmphystofile", 1, 2,        &g_aPgmPhysToFileArgs[0], 2,            NULL,               0,          pgmR3CmdPhysToFile, "",                     "Save the physical memory to file." },
     
    20342034        pgmR3PhysRelinkRamRanges(pVM);
    20352035    }
     2036
     2037    /*
     2038     * Update the pSelfRC pointer of the MMIO2 ram ranges since they might not
     2039     * be mapped and thus not included in the above exercise.
     2040     */
     2041    for (PPGMMMIO2RANGE pCur = pVM->pgm.s.pMmio2RangesR3; pCur; pCur = pCur->pNextR3)
     2042        if (!(pCur->RamRange.fFlags & PGM_RAM_RANGE_FLAGS_FLOATING))
     2043            pCur->RamRange.pSelfRC = MMHyperCCToRC(pVM, &pCur->RamRange);
    20362044
    20372045    /*
     
    50205028
    50215029    pgmLock(pVM);
    5022     for (PPGMRAMRANGE pRam = pVM->pgm.s.pRamRangesR3; 
    5023           pRam && pRam->GCPhys < GCPhysEnd && RT_SUCCESS(rc); 
     5030    for (PPGMRAMRANGE pRam = pVM->pgm.s.pRamRangesR3;
     5031          pRam && pRam->GCPhys < GCPhysEnd && RT_SUCCESS(rc);
    50245032          pRam = pRam->pNextR3)
    50255033    {
     
    50405048            {
    50415049                if (fIncZeroPgs)
    5042                 {   
     5050                {
    50435051                    rc = RTFileWrite(hFile, abZeroPg, PAGE_SIZE, NULL);
    50445052                    if (RT_FAILURE(rc))
     
    50755083                    case PGMPAGETYPE_MMIO:
    50765084                        if (fIncZeroPgs)
    5077                         {   
     5085                        {
    50785086                            rc = RTFileWrite(hFile, abZeroPg, PAGE_SIZE, NULL);
    50795087                            if (RT_FAILURE(rc))
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