VirtualBox

Changeset 93596 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
Feb 3, 2022 9:43:35 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
149733
Message:

VMM/PGM: Init HCPhysZeroPg and HCPhysMmioPg in ring-0 and forget MMR3HyperHCVirt2HCPhys. bugref:10093

Location:
trunk/src/VBox/VMM/VMMR0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp

    r93554 r93596  
    905905                        pGVM->gvmm.s.VMMemObj  = hVMMemObj;
    906906                        rc = GMMR0InitPerVMData(pGVM);
    907                         int rc2 = PGMR0InitPerVMData(pGVM);
     907                        int rc2 = PGMR0InitPerVMData(pGVM, hVMMemObj);
    908908                        int rc3 = VMMR0InitPerVMData(pGVM);
    909909                        DBGFR0InitPerVMData(pGVM);
  • trunk/src/VBox/VMM/VMMR0/PGMR0.cpp

    r93554 r93596  
    6868 * @returns VBox status code.
    6969 * @param   pGVM    Pointer to the global VM structure.
    70  */
    71 VMMR0_INT_DECL(int) PGMR0InitPerVMData(PGVM pGVM)
     70 * @param   hMemObj Handle to the memory object backing pGVM.
     71 */
     72VMMR0_INT_DECL(int) PGMR0InitPerVMData(PGVM pGVM, RTR0MEMOBJ hMemObj)
    7273{
    7374    AssertCompile(sizeof(pGVM->pgm.s) <= sizeof(pGVM->pgm.padding));
     
    8081        pGVM->pgmr0.s.ahPoolMapObjs[i] = NIL_RTR0MEMOBJ;
    8182    }
     83
     84    /*
     85     * Get the physical address of the ZERO and MMIO-dummy pages.
     86     */
     87    AssertReturn(((uintptr_t)&pGVM->pgm.s.abZeroPg[0] & HOST_PAGE_OFFSET_MASK) == 0, VERR_INTERNAL_ERROR_2);
     88    pGVM->pgm.s.HCPhysZeroPg    = RTR0MemObjGetPagePhysAddr(hMemObj, RT_UOFFSETOF(GVM, pgm.s.abZeroPg) >> HOST_PAGE_SHIFT);
     89    AssertReturn(pGVM->pgm.s.HCPhysZeroPg != NIL_RTHCPHYS, VERR_INTERNAL_ERROR_3);
     90
     91    AssertReturn(((uintptr_t)&pGVM->pgm.s.abMmioPg[0] & HOST_PAGE_OFFSET_MASK) == 0, VERR_INTERNAL_ERROR_2);
     92    pGVM->pgm.s.HCPhysMmioPg    = RTR0MemObjGetPagePhysAddr(hMemObj, RT_UOFFSETOF(GVM, pgm.s.abMmioPg) >> HOST_PAGE_SHIFT);
     93    AssertReturn(pGVM->pgm.s.HCPhysMmioPg != NIL_RTHCPHYS, VERR_INTERNAL_ERROR_3);
     94
     95    pGVM->pgm.s.HCPhysInvMmioPg = pGVM->pgm.s.HCPhysMmioPg;
     96
    8297    return RTCritSectInit(&pGVM->pgmr0.s.PoolGrowCritSect);
    8398}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette