VirtualBox

Changeset 80722 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Sep 11, 2019 9:21:47 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133263
Message:

PDM,PCI: More PDMPCIDEV related refactoring work, mainly concerned with eliminating unnecessary pointers. bugref:9218

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

Legend:

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

    r80706 r80722  
    284284             pDevIns, pDevIns->iInstance, pPciDev, pPciDev->uDevFn, iIrq, iLevel));
    285285    PGVM         pGVM    = pDevIns->Internal.s.pGVM;
    286     PPDMPCIBUS   pPciBus = pPciDev->Int.s.pPdmBusR0;
     286    size_t const idxBus  = pPciDev->Int.s.idxPdmBus;
     287    AssertReturnVoid(idxBus < RT_ELEMENTS(pGVM->pdm.s.aPciBuses));
     288    PPDMPCIBUS   pPciBus = &pGVM->pdm.s.aPciBuses[idxBus];
    287289
    288290    pdmLock(pGVM);
  • trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp

    r80704 r80722  
    17351735        {
    17361736            uPciDevNo    = pPrevPciDev->uDevFn >> 3;
    1737             uDefPciBusNo = pPrevPciDev->Int.s.pPdmBusR3->iBus;
     1737            uDefPciBusNo = pPrevPciDev->Int.s.idxPdmBus;
    17381738        }
    17391739        else
     
    17571757                pOtherPciDev = pOtherPciDev->Int.s.pNextR3;
    17581758            uPciDevNo    = pOtherPciDev->uDevFn >> 3;
    1759             uDefPciBusNo = pOtherPciDev->Int.s.pPdmBusR3->iBus;
     1759            uDefPciBusNo = pOtherPciDev->Int.s.idxPdmBus;
    17601760        }
    17611761    }
     
    17801780                           RT_ELEMENTS(pVM->pdm.s.aPciBuses), pDevIns->pReg->szName, pDevIns->iInstance),
    17811781                          VERR_PDM_NO_PCI_BUS);
    1782     PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3 = &pVM->pdm.s.aPciBuses[u8Bus];
     1782    pPciDev->Int.s.idxPdmBus = u8Bus;
     1783    PPDMPCIBUS pBus = &pVM->pdm.s.aPciBuses[u8Bus];
    17831784    if (pBus->pDevInsR3)
    17841785    {
     
    18351836        pPciDev->Int.s.fReassignableFunNo = uPciFunNo >= VBOX_PCI_MAX_FUNCTIONS;
    18361837        pPciDev->Int.s.pDevInsR3 = pDevIns;
    1837         pPciDev->Int.s.pPdmBusR3 = pBus;
    1838         if (pDevIns->pReg->fFlags & PDM_DEVREG_FLAGS_R0)
    1839         {
    1840             pPciDev->Int.s.pDevInsR0 = pDevIns->pDevInsR0RemoveMe;
    1841             pPciDev->Int.s.pPdmBusR0 = MMHyperR3ToR0(pVM, pBus);
    1842         }
    1843         else
    1844         {
    1845             pPciDev->Int.s.pDevInsR0 = NIL_RTR0PTR;
    1846             pPciDev->Int.s.pPdmBusR0 = NIL_RTR0PTR;
    1847         }
    1848 
    1849         //if (pDevIns->pReg->fFlags & PDM_DEVREG_FLAGS_RC)
    1850         //{
    1851         //    pPciDev->Int.s.pDevInsRC = MMHyperR3ToRC(pVM, pDevIns);
    1852         //    pPciDev->Int.s.pPdmBusRC = MMHyperR3ToRC(pVM, pBus);
    1853         //}
    1854         //else
    1855         {
    1856             pPciDev->Int.s.pDevInsRC = NIL_RTRCPTR;
    1857             pPciDev->Int.s.pPdmBusRC = NIL_RTRCPTR;
    1858         }
     1838        pPciDev->Int.s.idxPdmBus = u8Bus;
    18591839
    18601840        /* Set some of the public members too. */
     
    18781858                pPrevPciDev->Int.s.pNextR3 = pPciDev;
    18791859                pPrevPciDev->Int.s.pNextR0 = NIL_RTRCPTR;
    1880                 pPrevPciDev->Int.s.pNextRC = NIL_RTRCPTR;
    18811860            }
    18821861            else
     
    19331912                          VERR_INVALID_FLAGS);
    19341913
    1935     PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3; Assert(pBus);
    1936     PVM        pVM  = pDevIns->Internal.s.pVMR3;
     1914    PVM             pVM    = pDevIns->Internal.s.pVMR3;
     1915    size_t const    idxBus = pPciDev->Int.s.idxPdmBus;
     1916    AssertReturn(idxBus < RT_ELEMENTS(pVM->pdm.s.aPciBuses), VERR_WRONG_ORDER);
     1917    PPDMPCIBUS      pBus   = &pVM->pdm.s.aPciBuses[idxBus];
     1918
    19371919    pdmLock(pVM);
    19381920    int rc;
     
    20372019        cbRegion = cbRegionAligned * 2; /* round up */
    20382020
    2039     PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3;
    2040     Assert(pBus);
     2021    size_t const    idxBus = pPciDev->Int.s.idxPdmBus;
     2022    AssertReturn(idxBus < RT_ELEMENTS(pVM->pdm.s.aPciBuses), VERR_WRONG_ORDER);
     2023    PPDMPCIBUS      pBus   = &pVM->pdm.s.aPciBuses[idxBus];
     2024
    20412025    pdmLock(pVM);
    20422026    int rc = pBus->pfnIORegionRegisterR3(pBus->pDevInsR3, pPciDev, iRegion, cbRegion, enmType, pfnCallback);
     
    20702054    AssertPtrNull(pPciDev);
    20712055
    2072     PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3;
    2073     AssertRelease(pBus);
     2056    size_t const    idxBus = pPciDev->Int.s.idxPdmBus;
     2057    AssertReleaseReturnVoid(idxBus < RT_ELEMENTS(pVM->pdm.s.aPciBuses));
     2058    PPDMPCIBUS      pBus   = &pVM->pdm.s.aPciBuses[idxBus];
    20742059    AssertRelease(VMR3GetState(pVM) != VMSTATE_RUNNING);
    20752060
     
    21592144     * Must have a PCI device registered!
    21602145     */
    2161     PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3;
    2162     Assert(pBus);
    2163     PVM pVM = pDevIns->Internal.s.pVMR3;
     2146    PVM             pVM    = pDevIns->Internal.s.pVMR3;
     2147    size_t const    idxBus = pPciDev->Int.s.idxPdmBus;
     2148    AssertReturnVoid(idxBus < RT_ELEMENTS(pVM->pdm.s.aPciBuses));
     2149    PPDMPCIBUS      pBus   = &pVM->pdm.s.aPciBuses[idxBus];
    21642150
    21652151    pdmLock(pVM);
     
    48834869            if (pPciDev)
    48844870            {
    4885                 PPDMPCIBUS pBus = pPciDev->Int.s.pPdmBusR3;
    4886                 Assert(pBus);
     4871                size_t const    idxBus = pPciDev->Int.s.idxPdmBus;
     4872                AssertBreak(idxBus < RT_ELEMENTS(pVM->pdm.s.aPciBuses));
     4873                PPDMPCIBUS      pBus   = &pVM->pdm.s.aPciBuses[idxBus];
    48874874
    48884875                pdmLock(pVM);
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