VirtualBox

Changeset 23453 in vbox for trunk/src/VBox/VMM/PGMPhys.cpp


Ignore:
Timestamp:
Sep 30, 2009 9:55:25 PM (15 years ago)
Author:
vboxsync
Message:

PGMPhysPageMap cleanup.

File:
1 edited

Legend:

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

    r23443 r23453  
    11681168                            {
    11691169                                void *pvPage;
    1170                                 PPGMPAGEMAP pMapIgnored;
    1171                                 rc = pgmPhysPageMap(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pMapIgnored, &pvPage);
     1170                                rc = pgmPhysPageMap(pVM, pPage, pRam->GCPhys + ((RTGCPHYS)iPage << PAGE_SHIFT), &pvPage);
    11721171                                AssertLogRelRCReturn(rc, rc);
    11731172                                ASMMemZeroPage(pvPage);
     
    23292328                {
    23302329                    void *pvDstPage;
    2331                     PPGMPAGEMAP pMapIgnored;
    2332                     rc = pgmPhysPageMap(pVM, pRamPage, GCPhys + (iPage << PAGE_SHIFT), &pMapIgnored, &pvDstPage);
     2330                    rc = pgmPhysPageMap(pVM, pRamPage, GCPhys + (iPage << PAGE_SHIFT), &pvDstPage);
    23332331                    if (RT_FAILURE(rc))
    23342332                    {
     
    24832481                int rc = pgmLock(pVM);
    24842482                AssertRC(rc);
     2483
    24852484                PPGMPAGE pShadowPage = &pRomPage->Shadow;
    24862485                if (!PGMROMPROT_IS_ROM(pRomPage->enmProt))
     
    24902489                }
    24912490
    2492                 pRomPage->LiveSave.fWrittenTo = true;
    2493                 if (RT_UNLIKELY(PGM_PAGE_GET_STATE(pShadowPage) != PGM_PAGE_STATE_ALLOCATED))
     2491                void *pvDstPage;
     2492                rc = pgmPhysPageMakeWritableAndMap(pVM, pShadowPage, GCPhys & X86_PTE_PG_MASK, &pvDstPage);
     2493                if (RT_SUCCESS(rc))
    24942494                {
    2495                     rc = pgmPhysPageMakeWritable(pVM, pShadowPage, GCPhys);
    2496                     if (RT_FAILURE(rc))
    2497                     {
    2498                         pgmUnlock(pVM);
    2499                         return rc;
    2500                     }
    2501                     AssertMsg(rc == VINF_SUCCESS || rc == VINF_PGM_SYNC_CR3 /* returned */, ("%Rrc\n", rc));
     2495                    memcpy((uint8_t *)pvDstPage + (GCPhys & PAGE_OFFSET_MASK), pvBuf, cbBuf);
     2496                    pRomPage->LiveSave.fWrittenTo = true;
    25022497                }
    2503 
    2504                 void       *pvDstPage;
    2505                 PPGMPAGEMAP pMapIgnored;
    2506                 int rc2 = pgmPhysPageMap(pVM, pShadowPage, GCPhys & X86_PTE_PG_MASK, &pMapIgnored, &pvDstPage);
    2507                 if (RT_SUCCESS(rc2))
    2508                     memcpy((uint8_t *)pvDstPage + (GCPhys & PAGE_OFFSET_MASK), pvBuf, cbBuf);
    2509                 else
    2510                     rc = rc2;
    25112498
    25122499                pgmUnlock(pVM);
     
    25822569                {
    25832570                    Assert(PGM_PAGE_GET_STATE(&pRom->aPages[iPage].Shadow) != PGM_PAGE_STATE_ZERO);
    2584 
     2571                    void *pvDstPage;
    25852572                    const RTGCPHYS GCPhys = pRom->GCPhys + (iPage << PAGE_SHIFT);
    2586                     rc = pgmPhysPageMakeWritable(pVM, &pRom->aPages[iPage].Shadow, GCPhys);
    2587                     if (RT_FAILURE(rc))
    2588                         break;
    2589 
    2590                     void *pvDstPage;
    2591                     PPGMPAGEMAP pMapIgnored;
    2592                     rc = pgmPhysPageMap(pVM, &pRom->aPages[iPage].Shadow, GCPhys, &pMapIgnored, &pvDstPage);
     2573                    rc = pgmPhysPageMakeWritableAndMap(pVM, &pRom->aPages[iPage].Shadow, GCPhys, &pvDstPage);
    25932574                    if (RT_FAILURE(rc))
    25942575                        break;
     
    26092590            {
    26102591                const RTGCPHYS GCPhys = pRom->GCPhys + (iPage << PAGE_SHIFT);
    2611                 PPGMPAGEMAP pMapIgnored;
    2612                 void *pvDstPage;
    2613                 int rc = pgmPhysPageMap(pVM, &pRom->aPages[iPage].Virgin, GCPhys, &pMapIgnored, &pvDstPage);
     2592                void const *pvDstPage;
     2593                int rc = pgmPhysPageMapReadOnly(pVM, &pRom->aPages[iPage].Virgin, GCPhys, &pvDstPage);
    26142594                if (RT_FAILURE(rc))
    26152595                    break;
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