VirtualBox

Changeset 17643 in vbox


Ignore:
Timestamp:
Mar 10, 2009 4:37:32 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
44129
Message:

Some more locking. We really need a better solution.

File:
1 edited

Legend:

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

    r17641 r17643  
    988988# endif /* PGM_SHW_TYPE == PGM_TYPE_AMD64 */
    989989
     990# if defined(IN_RC)
     991    /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     992    PGMDynLockHCPage(pVM, (uint8_t *)pPdeDst);
     993# endif
     994
    990995    const SHWPDE PdeDst = *pPdeDst;
    991996    if (!PdeDst.n.u1Present)
     
    12501255                    LogFlow(("Skipping flush for big page containing %RGv (PD=%X .u=%RX64)-> nothing has changed!\n", GCPtrPage, iPDSrc, PdeSrc.u));
    12511256                    STAM_COUNTER_INC(&pVM->pgm.s.CTX_MID_Z(Stat,InvalidatePage4MBPagesSkip));
     1257# if defined(IN_RC)
     1258                    /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     1259                    PGMDynUnlockHCPage(pVM, (uint8_t *)pPdeDst);
     1260# endif
    12521261                    return VINF_SUCCESS;
    12531262                }
     
    12861295        }
    12871296    }
    1288 
     1297# if defined(IN_RC)
     1298    /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     1299    PGMDynUnlockHCPage(pVM, (uint8_t *)pPdeDst);
     1300# endif
    12891301    return rc;
    12901302
     
    16431655    PPGMPOOLPAGE    pShwPde  = pgmPoolGetPageByHCPhys(pVM, pPdptDst->a[iPdpt].u & X86_PDPE_PG_MASK);
    16441656    Assert(pShwPde);
     1657# endif
     1658
     1659# if defined(IN_RC)
     1660    /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     1661    PGMDynLockHCPage(pVM, (uint8_t *)pPdeDst);
    16451662# endif
    16461663
     
    18601877                    LogFlow(("PGM_GCPHYS_2_PTR %RGp (big) failed with %Rrc\n", GCPhys, rc));
    18611878            }
     1879# if defined(IN_RC)
     1880            /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     1881            PGMDynUnlockHCPage(pVM, (uint8_t *)pPdeDst);
     1882# endif
    18621883            return VINF_SUCCESS;
    18631884        }
     
    18791900
    18801901    pPdeDst->u = 0;
     1902
     1903# if defined(IN_RC)
     1904    /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     1905    PGMDynUnlockHCPage(pVM, (uint8_t *)pPdeDst);
     1906# endif
    18811907    PGM_INVL_GUEST_TLBS();
    18821908    return VINF_PGM_SYNCPAGE_MODIFIED_PDE;
     
    31263152    pPdeDst = &pPDDst->a[iPDDst];
    31273153# endif
     3154
    31283155    if (!pPdeDst->n.u1Present)
    31293156    {
     3157# if defined(IN_RC)
     3158        /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     3159        PGMDynLockHCPage(pVM, (uint8_t *)pPdeDst);
     3160# endif
    31303161        rc = PGM_BTH_NAME(SyncPT)(pVM, iPDSrc, pPDSrc, GCPtrPage);
     3162# if defined(IN_RC)
     3163        /* Make sure the dynamic pPdeDst mapping will not be reused during this function. */
     3164        PGMDynUnlockHCPage(pVM, (uint8_t *)pPdeDst);
     3165# endif
    31313166        AssertRC(rc);
    31323167        if (rc != VINF_SUCCESS)
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