VirtualBox

Changeset 100958 in vbox


Ignore:
Timestamp:
Aug 23, 2023 2:11:16 PM (14 months ago)
Author:
vboxsync
Message:

VMM/PGM: Made the VBOX_WITH_NEW_LAZY_PAGE_ALLOC #ifdef'ed code work a little better. bugref:6385

File:
1 edited

Legend:

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

    r100243 r100958  
    779779            {
    780780                Log(("PGM #PF: Make writable: %RGp %R[pgmpage] pvFault=%RGp uErr=%#x\n", GCPhys, pPage, pvFault, uErr));
     781#   ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC
    781782                Assert(!PGM_PAGE_IS_ZERO(pPage));
     783#   endif
    782784                AssertFatalMsg(!PGM_PAGE_IS_BALLOONED(pPage), ("Unexpected ballooned page at %RGp\n", GCPhys));
    783785                STAM_STATS({ pVCpu->pgmr0.s.pStatTrap0eAttributionR0 = &pVCpu->pgm.s.Stats.StatRZTrap0eTime2MakeWritable; });
     
    19751977                 * Make sure only allocated pages are mapped writable.
    19761978                 */
    1977                 if (    SHW_PTE_IS_P_RW(PteDst)
    1978                     &&  PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED)
     1979                if (   SHW_PTE_IS_P_RW(PteDst)
     1980                    && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED)
    19791981                {
     1982# ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC
    19801983                    /* Still applies to shared pages. */
    19811984                    Assert(!PGM_PAGE_IS_ZERO(pPage));
     1985# endif
    19821986                    SHW_PTE_SET_RO(PteDst);   /** @todo this isn't quite working yet. Why, isn't it? */
    19831987                    Log3(("SyncPageWorker: write-protecting %RGp pPage=%R[pgmpage]at iPTDst=%d\n", GCPhysPage, pPage, iPTDst));
     
    23182322                        &&  PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED)
    23192323                    {
     2324# ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC
    23202325                        /* Still applies to shared pages. */
    23212326                        Assert(!PGM_PAGE_IS_ZERO(pPage));
     2327# endif
    23222328                        SHW_PTE_SET_RO(PteDst);   /** @todo this isn't quite working yet... */
    23232329                        Log3(("SyncPage: write-protecting %RGp pPage=%R[pgmpage] at %RGv\n", GCPhys, pPage, GCPtrPage));
     
    26102616        Pte.u = PGM_PAGE_GET_HCPHYS(pPage) | fGstShwPteFlags;
    26112617        Log7Func(("regular page (%R[pgmpage]) at %RGp -> %RX64\n", pPage, GCPhysPage, Pte.u));
     2618
     2619        /* Make sure only allocated pages are mapped writable. */
     2620        if (   (fGstShwPteFlags & EPT_E_WRITE)
     2621            && PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED)
     2622        {
     2623            Pte.u &= ~EPT_E_WRITE;
     2624            Log7Func(("write-protecting page (%R[pgmpage]) at %RGp -> %RX64\n", pPage, GCPhysPage, Pte.u));
     2625        }
    26122626    }
    26132627    else if (!PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage))
     
    36653679                            &&  PGM_PAGE_GET_STATE(pPage) != PGM_PAGE_STATE_ALLOCATED)
    36663680                        {
     3681# ifndef VBOX_WITH_NEW_LAZY_PAGE_ALLOC
    36673682                            /* Still applies to shared pages. */
    36683683                            Assert(!PGM_PAGE_IS_ZERO(pPage));
     3684# endif
    36693685                            SHW_PTE_SET_RO(PteDst);   /** @todo this isn't quite working yet... */
    36703686                            Log3(("SyncPT: write-protecting %RGp pPage=%R[pgmpage] at %RGv\n", GCPhys, pPage, (RTGCPTR)(GCPtr | (iPTDst << SHW_PT_SHIFT))));
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