VirtualBox

Changeset 100198 in vbox for trunk


Ignore:
Timestamp:
Jun 16, 2023 12:04:51 PM (18 months ago)
Author:
vboxsync
Message:

VMM/PGM: Nested VMX: bugref:10318 Fixed hang when starting inner VMs sometimes due to repeated faults on unallocated/zero page.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r99788 r100198  
    25862586    {
    25872587# ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC
    2588         /* Page wasn't allocated, write protect it. */
     2588        /* If it's the zero page or write to an unallocated page, allocate it to make it writable. */
    25892589        if (    PGM_PAGE_GET_TYPE(pPage)  == PGMPAGETYPE_RAM
    25902590            &&  (   PGM_PAGE_IS_ZERO(pPage)
     
    26022602           )
    26032603        {
    2604             Pte.u = PGM_PAGE_GET_HCPHYS(pPage) | (fGstShwPteFlags & ~EPT_E_WRITE);
    2605             Log7Func(("zero page (%R[pgmpage]) at %RGp -> %RX64\n", pPage, GCPhysPage, Pte.u));
    2606         }
    2607         else
     2604            rc = pgmPhysPageMakeWritable(pVCpu->CTX_SUFF(pVM), pPage, GCPhysPage);
     2605            AssertRC(rc);
     2606            Log7Func(("made writable (%R[pgmpage]) at %RGp\n", pPage, GCPhysPage));
     2607        }
    26082608# endif
    2609         {
    2610             /** @todo access bit. */
    2611             Pte.u = PGM_PAGE_GET_HCPHYS(pPage) | fGstShwPteFlags;
    2612             Log7Func(("regular page (%R[pgmpage]) at %RGp -> %RX64\n", pPage, GCPhysPage, Pte.u));
    2613         }
     2609        /** @todo access bit. */
     2610        Pte.u = PGM_PAGE_GET_HCPHYS(pPage) | fGstShwPteFlags;
     2611        Log7Func(("regular page (%R[pgmpage]) at %RGp -> %RX64\n", pPage, GCPhysPage, Pte.u));
    26142612    }
    26152613    else if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage))
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