VirtualBox

Changeset 13393 in vbox for trunk/src


Ignore:
Timestamp:
Oct 20, 2008 1:26:44 PM (16 years ago)
Author:
vboxsync
Message:

Updates for physical page aliases

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp

    r13392 r13393  
    17621762    AssertRCReturn(rc, rc);
    17631763
     1764    /* Prefetch it as it's now marked as not present and our trap handler will
     1765     * still call the access handler.
     1766     */
     1767    rc = PGMPrefetchPage(pVM, (RTGCPTR)GCPhys);
     1768    AssertRC(rc);
     1769
    17641770    /* Mark it as writable and present so reads and writes no longer fault. */
    1765     rc = PGMShwSetPage(pVM, (RTGCPTR)GCPhys, PAGE_SIZE, fPageFlags);
     1771    rc = PGMShwModifyPage(pVM, (RTGCPTR)GCPhys, 1, fPageFlags, ~fPageFlags);
    17661772    AssertRC(rc);
    17671773
     
    18061812
    18071813        /* Mark it as not present again to intercept all read and write access. */
    1808         rc = PGMShwSetPage(pVM, (RTGCPTR)GCPhys, PAGE_SIZE, 0);
     1814        rc = PGMShwModifyPage(pVM, (RTGCPTR)GCPhys, 1, 0, ~(uint64_t)(X86_PTE_RW|X86_PTE_P));
    18091815        AssertRC(rc);
    18101816
  • trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp

    r13387 r13393  
    947947            pPage->HCPhys = pPageRemap->HCPhys;
    948948
     949            LogFlow(("PGMHandlerPhysicalPageAlias %VGp -> %VGp - %VHp\n", GCPhysPage, GCPhysPageRemap, pPageRemap->HCPhys));
    949950            PGM_PAGE_SET_HNDL_PHYS_STATE(pPage, PGM_PAGE_HNDL_PHYS_STATE_DISABLED);
    950951#ifndef IN_GC
  • trunk/src/VBox/VMM/VMMAll/PGMAllShw.h

    r13232 r13393  
    359359            {
    360360                pPT->a[iPTE].u = (pPT->a[iPTE].u & (fMask | SHW_PTE_PG_MASK)) | (fFlags & ~SHW_PTE_PG_MASK);
    361                 Assert(pPT->a[iPTE].n.u1Present);
     361                Assert(pPT->a[iPTE].n.u1Present || !(fMask & X86_PTE_P));
    362362# if PGM_SHW_TYPE == PGM_TYPE_EPT
    363363                HWACCMInvalidatePhysPage(pVM, (RTGCPHYS)GCPtr);
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