VirtualBox

Changeset 36627 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 8, 2011 3:38:47 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
71083
Message:

Fix regression introduced with r70774. Change the RC structure of the mapping cache instead of the R0 one

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/PGM.cpp

    r36441 r36627  
    22762276        for (uint32_t iPage = 0; iPage < pDynMap->cPages; iPage++)
    22772277        {
    2278             paPages[iPage].pvPage  += offDelta;
    2279             paPages[iPage].uPte.pv += offDelta;
     2278            paPages[iPage].pvPage       += offDelta;
     2279            paPages[iPage].uPte.pLegacy += offDelta;
     2280            paPages[iPage].uPte.pPae    += offDelta;
    22802281        }
    22812282    }
  • trunk/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp

    r36416 r36627  
    206206    /** The number of references. */
    207207    int32_t volatile            cRefs;
    208 #ifndef IN_RC
    209208    /** PTE pointer union. */
    210209    union PGMR0DYNMAPENTRY_PPTE
     
    217216        void                   *pv;
    218217    } uPte;
    219 #else
    220     /** PTE pointers. */
    221     struct PGMR0DYNMAPENTRY_PPTE
    222     {
    223         /** PTE pointer, 32-bit legacy version. */
    224         PX86PTE                 pLegacy;
    225         /** PTE pointer, PAE version. */
    226         PX86PTEPAE              pPae;
    227     } uPte;
    228 #endif
    229 # ifndef IN_RC
    230218    /** CPUs that haven't invalidated this entry after it's last update. */
    231219    RTCPUSET                    PendingSet;
    232 # endif
    233220} PGMR0DYNMAPENTRY;
    234221/** Pointer a mapping cache entry for the ring-0.
     
    251238    /** The usual magic number / eye catcher (PGMRZDYNMAP_MAGIC). */
    252239    uint32_t                    u32Magic;
    253 # ifndef IN_RC
    254240    /** Spinlock serializing the normal operation of the cache. */
    255241    RTSPINLOCK                  hSpinlock;
    256 # endif
    257242    /** Array for tracking and managing the pages.  */
    258243    PPGMR0DYNMAPENTRY           paPages;
    259244    /** The cache size given as a number of pages. */
    260245    uint32_t                    cPages;
    261 # ifndef IN_RC
    262246    /** Whether it's 32-bit legacy or PAE/AMD64 paging mode. */
    263247    bool                        fLegacyMode;
    264 # endif
    265248    /** The current load.
    266249     * This does not include guard pages. */
     
    269252     * This is maintained to trigger the adding of more mapping space. */
    270253    uint32_t                    cMaxLoad;
    271 # ifndef IN_RC
    272254    /** Initialization / termination lock. */
    273255    RTSEMFASTMUTEX              hInitLock;
    274 # endif
    275256    /** The number of guard pages. */
    276257    uint32_t                    cGuardPages;
    277258    /** The number of users (protected by hInitLock). */
    278259    uint32_t                    cUsers;
    279 # ifndef IN_RC
    280260    /** Array containing a copy of the original page tables.
    281261     * The entries are either X86PTE or X86PTEPAE according to fLegacyMode. */
     
    285265    /** The paging mode. */
    286266    SUPPAGINGMODE               enmPgMode;
    287 # endif
    288267} PGMR0DYNMAP;
    289268
     
    16101589    PPGMRZDYNMAPENTRY   paPages     = pThis->paPages;
    16111590    uint32_t            iPage       = pThis->cPages;
     1591
     1592#ifndef IN_RC
    16121593    if (pThis->fLegacyMode)
     1594#endif
    16131595    {
    16141596#ifdef IN_RING0
     
    16501632        }
    16511633    }
     1634#ifndef IN_RC
    16521635    else
     1636#endif
    16531637    {
    16541638#ifdef IN_RING0
  • trunk/src/VBox/VMM/include/PGMInternal.h

    r36441 r36627  
    16771677    int32_t volatile            cRefs;
    16781678    /** PTE pointer union. */
    1679     union PGMRCDYNMAPENTRY_PPTE
     1679    struct PGMRCDYNMAPENTRY_PPTE
    16801680    {
    16811681        /** PTE pointer, 32-bit legacy version. */
     
    16831683        /** PTE pointer, PAE version. */
    16841684        RCPTRTYPE(PX86PTEPAE)   pPae;
    1685         /** PTE pointer, the void version. */
    1686         RTRCPTR                 pv;
    16871685    } uPte;
    16881686    /** Alignment padding. */
     
    17121710    /** The cache size given as a number of pages. */
    17131711    uint32_t                        cPages;
    1714     /** Whether it's 32-bit legacy or PAE/AMD64 paging mode. */
    1715     bool                            fLegacyMode;
    17161712    /** The current load.
    17171713     * This does not include guard pages. */
  • trunk/src/VBox/VMM/testcase/tstVMStructRC.cpp

    r35601 r36627  
    798798    GEN_CHECK_OFF(PGMRCDYNMAP, paPages);
    799799    GEN_CHECK_OFF(PGMRCDYNMAP, cPages);
    800     GEN_CHECK_OFF(PGMRCDYNMAP, fLegacyMode);
    801800    GEN_CHECK_OFF(PGMRCDYNMAP, cLoad);
    802801    GEN_CHECK_OFF(PGMRCDYNMAP, cMaxLoad);
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