VirtualBox

Changeset 11224 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 7, 2008 6:25:15 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
34279
Message:

PDM: GC->RC, HC->R3 wrt PCI bus registration.

Location:
trunk/src/VBox
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Bus/DevPCI.cpp

    r11192 r11224  
    14831483
    14841484    PciBusReg.u32Version              = PDM_PCIBUSREG_VERSION;
    1485     PciBusReg.pfnRegisterHC           = pciRegister;
    1486     PciBusReg.pfnIORegionRegisterHC   = pciIORegionRegister;
    1487     PciBusReg.pfnSetConfigCallbacksHC = pciSetConfigCallbacks;
    1488     PciBusReg.pfnSetIrqHC             = pciSetIrq;
    1489     PciBusReg.pfnSaveExecHC           = pciGenericSaveExec;
    1490     PciBusReg.pfnLoadExecHC           = pciGenericLoadExec;
    1491     PciBusReg.pfnFakePCIBIOSHC        = pciFakePCIBIOS;
    1492     PciBusReg.pszSetIrqGC             = fGCEnabled ? "pciSetIrq" : NULL;
     1485    PciBusReg.pfnRegisterR3           = pciRegister;
     1486    PciBusReg.pfnIORegionRegisterR3   = pciIORegionRegister;
     1487    PciBusReg.pfnSetConfigCallbacksR3 = pciSetConfigCallbacks;
     1488    PciBusReg.pfnSetIrqR3             = pciSetIrq;
     1489    PciBusReg.pfnSaveExecR3           = pciGenericSaveExec;
     1490    PciBusReg.pfnLoadExecR3           = pciGenericLoadExec;
     1491    PciBusReg.pfnFakePCIBIOSR3        = pciFakePCIBIOS;
     1492    PciBusReg.pszSetIrqRC             = fGCEnabled ? "pciSetIrq" : NULL;
    14931493    PciBusReg.pszSetIrqR0             = fR0Enabled ? "pciSetIrq" : NULL;
    14941494    rc = pDevIns->pDevHlp->pfnPCIBusRegister(pDevIns, &PciBusReg, &pBus->pPciHlpR3);
  • trunk/src/VBox/VMM/PDM.cpp

    r11219 r11224  
    300300    for (unsigned i = 0; i < ELEMENTS(pVM->pdm.s.aPciBuses); i++)
    301301    {
    302         if (pVM->pdm.s.aPciBuses[i].pDevInsGC)
    303         {
    304             pVM->pdm.s.aPciBuses[i].pDevInsGC   += offDelta;
    305             pVM->pdm.s.aPciBuses[i].pfnSetIrqGC += offDelta;
     302        if (pVM->pdm.s.aPciBuses[i].pDevInsRC)
     303        {
     304            pVM->pdm.s.aPciBuses[i].pDevInsRC   += offDelta;
     305            pVM->pdm.s.aPciBuses[i].pfnSetIrqRC += offDelta;
    306306        }
    307307    }
  • trunk/src/VBox/VMM/PDMDevice.cpp

    r11219 r11224  
    23552355    PVM pVM = pDevIns->Internal.s.pVMHC;
    23562356    VM_ASSERT_EMT(pVM);
    2357     LogFlow(("pdmR3DevHlp_PCIBusRegister: caller='%s'/%d: pPciBusReg=%p:{.u32Version=%#x, .pfnRegisterHC=%p, .pfnIORegionRegisterHC=%p, .pfnSetIrqHC=%p, "
    2358              ".pfnSaveExecHC=%p, .pfnLoadExecHC=%p, .pfnFakePCIBIOSHC=%p, .pszSetIrqGC=%p:{%s}} ppPciHlpR3=%p\n",
    2359              pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pPciBusReg, pPciBusReg->u32Version, pPciBusReg->pfnRegisterHC,
    2360              pPciBusReg->pfnIORegionRegisterHC, pPciBusReg->pfnSetIrqHC, pPciBusReg->pfnSaveExecHC, pPciBusReg->pfnLoadExecHC,
    2361              pPciBusReg->pfnFakePCIBIOSHC, pPciBusReg->pszSetIrqGC, pPciBusReg->pszSetIrqGC, ppPciHlpR3));
     2357    LogFlow(("pdmR3DevHlp_PCIBusRegister: caller='%s'/%d: pPciBusReg=%p:{.u32Version=%#x, .pfnRegisterR3=%p, .pfnIORegionRegisterR3=%p, .pfnSetIrqR3=%p, "
     2358             ".pfnSaveExecR3=%p, .pfnLoadExecR3=%p, .pfnFakePCIBIOSR3=%p, .pszSetIrqRC=%p:{%s}, .pszSetIrqR0=%p:{%s}} ppPciHlpR3=%p\n",
     2359             pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pPciBusReg, pPciBusReg->u32Version, pPciBusReg->pfnRegisterR3,
     2360             pPciBusReg->pfnIORegionRegisterR3, pPciBusReg->pfnSetIrqR3, pPciBusReg->pfnSaveExecR3, pPciBusReg->pfnLoadExecR3,
     2361             pPciBusReg->pfnFakePCIBIOSR3, pPciBusReg->pszSetIrqRC, pPciBusReg->pszSetIrqRC, pPciBusReg->pszSetIrqR0, pPciBusReg->pszSetIrqR0, ppPciHlpR3));
    23622362
    23632363    /*
     
    23702370        return VERR_INVALID_PARAMETER;
    23712371    }
    2372     if (    !pPciBusReg->pfnRegisterHC
    2373         ||  !pPciBusReg->pfnIORegionRegisterHC
    2374         ||  !pPciBusReg->pfnSetIrqHC
    2375         ||  !pPciBusReg->pfnSaveExecHC
    2376         ||  !pPciBusReg->pfnLoadExecHC
    2377         ||  !pPciBusReg->pfnFakePCIBIOSHC)
    2378     {
    2379         Assert(pPciBusReg->pfnRegisterHC);
    2380         Assert(pPciBusReg->pfnIORegionRegisterHC);
    2381         Assert(pPciBusReg->pfnSetIrqHC);
    2382         Assert(pPciBusReg->pfnSaveExecHC);
    2383         Assert(pPciBusReg->pfnLoadExecHC);
    2384         Assert(pPciBusReg->pfnFakePCIBIOSHC);
    2385         LogFlow(("pdmR3DevHlp_PCIBusRegister: caller='%s'/%d: returns %Vrc (HC callbacks)\n", pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, VERR_INVALID_PARAMETER));
     2372    if (    !pPciBusReg->pfnRegisterR3
     2373        ||  !pPciBusReg->pfnIORegionRegisterR3
     2374        ||  !pPciBusReg->pfnSetIrqR3
     2375        ||  !pPciBusReg->pfnSaveExecR3
     2376        ||  !pPciBusReg->pfnLoadExecR3
     2377        ||  !pPciBusReg->pfnFakePCIBIOSR3)
     2378    {
     2379        Assert(pPciBusReg->pfnRegisterR3);
     2380        Assert(pPciBusReg->pfnIORegionRegisterR3);
     2381        Assert(pPciBusReg->pfnSetIrqR3);
     2382        Assert(pPciBusReg->pfnSaveExecR3);
     2383        Assert(pPciBusReg->pfnLoadExecR3);
     2384        Assert(pPciBusReg->pfnFakePCIBIOSR3);
     2385        LogFlow(("pdmR3DevHlp_PCIBusRegister: caller='%s'/%d: returns %Vrc (R3 callbacks)\n", pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, VERR_INVALID_PARAMETER));
    23862386        return VERR_INVALID_PARAMETER;
    23872387    }
    2388     if (    pPciBusReg->pszSetIrqGC
    2389         &&  !VALID_PTR(pPciBusReg->pszSetIrqGC))
    2390     {
    2391         Assert(VALID_PTR(pPciBusReg->pszSetIrqGC));
     2388    if (    pPciBusReg->pszSetIrqRC
     2389        &&  !VALID_PTR(pPciBusReg->pszSetIrqRC))
     2390    {
     2391        Assert(VALID_PTR(pPciBusReg->pszSetIrqRC));
    23922392        LogFlow(("pdmR3DevHlp_PCIBusRegister: caller='%s'/%d: returns %Vrc (GC callbacks)\n", pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, VERR_INVALID_PARAMETER));
    23932393        return VERR_INVALID_PARAMETER;
     
    24232423
    24242424    /*
    2425      * Resolve and init the GC bits.
    2426      */
    2427     if (pPciBusReg->pszSetIrqGC)
    2428     {
    2429         int rc = PDMR3GetSymbolGCLazy(pVM, pDevIns->pDevReg->szGCMod, pPciBusReg->pszSetIrqGC, &pPciBus->pfnSetIrqGC);
    2430         AssertMsgRC(rc, ("%s::%s rc=%Vrc\n", pDevIns->pDevReg->szGCMod, pPciBusReg->pszSetIrqGC, rc));
     2425     * Resolve and init the RC bits.
     2426     */
     2427    if (pPciBusReg->pszSetIrqRC)
     2428    {
     2429        int rc = PDMR3GetSymbolGCLazy(pVM, pDevIns->pDevReg->szGCMod, pPciBusReg->pszSetIrqRC, &pPciBus->pfnSetIrqRC);
     2430        AssertMsgRC(rc, ("%s::%s rc=%Vrc\n", pDevIns->pDevReg->szGCMod, pPciBusReg->pszSetIrqRC, rc));
    24312431        if (VBOX_FAILURE(rc))
    24322432        {
     
    24342434            return rc;
    24352435        }
    2436         pPciBus->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
     2436        pPciBus->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    24372437    }
    24382438    else
    24392439    {
    2440         pPciBus->pfnSetIrqGC = 0;
    2441         pPciBus->pDevInsGC   = 0;
     2440        pPciBus->pfnSetIrqRC = 0;
     2441        pPciBus->pDevInsRC   = 0;
    24422442    }
    24432443
     
    24632463
    24642464    /*
    2465      * Init the HC bits.
     2465     * Init the R3 bits.
    24662466     */
    24672467    pPciBus->iBus                    = iBus;
    24682468    pPciBus->pDevInsR3               = pDevIns;
    2469     pPciBus->pfnRegisterR3           = pPciBusReg->pfnRegisterHC;
    2470     pPciBus->pfnIORegionRegisterR3   = pPciBusReg->pfnIORegionRegisterHC;
    2471     pPciBus->pfnSetConfigCallbacksR3 = pPciBusReg->pfnSetConfigCallbacksHC;
    2472     pPciBus->pfnSetIrqR3             = pPciBusReg->pfnSetIrqHC;
    2473     pPciBus->pfnSaveExecR3           = pPciBusReg->pfnSaveExecHC;
    2474     pPciBus->pfnLoadExecR3           = pPciBusReg->pfnLoadExecHC;
    2475     pPciBus->pfnFakePCIBIOSR3        = pPciBusReg->pfnFakePCIBIOSHC;
     2469    pPciBus->pfnRegisterR3           = pPciBusReg->pfnRegisterR3;
     2470    pPciBus->pfnIORegionRegisterR3   = pPciBusReg->pfnIORegionRegisterR3;
     2471    pPciBus->pfnSetConfigCallbacksR3 = pPciBusReg->pfnSetConfigCallbacksR3;
     2472    pPciBus->pfnSetIrqR3             = pPciBusReg->pfnSetIrqR3;
     2473    pPciBus->pfnSaveExecR3           = pPciBusReg->pfnSaveExecR3;
     2474    pPciBus->pfnLoadExecR3           = pPciBusReg->pfnLoadExecR3;
     2475    pPciBus->pfnFakePCIBIOSR3        = pPciBusReg->pfnFakePCIBIOSR3;
    24762476
    24772477    Log(("PDM: Registered PCI bus device '%s'/%d pDevIns=%p\n", pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pDevIns));
  • trunk/src/VBox/VMM/PDMInternal.h

    r11221 r11224  
    473473    /** Pointer to PCI Bus device instance. */
    474474    PPDMDEVINSR3                    pDevInsR3;
    475     /** @copydoc PDMPCIBUSREG::pfnSetIrqHC */
     475    /** @copydoc PDMPCIBUSREG::pfnSetIrqR3 */
    476476    DECLR3CALLBACKMEMBER(void,      pfnSetIrqR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iIrq, int iLevel));
    477     /** @copydoc PDMPCIBUSREG::pfnRegisterHC */
     477    /** @copydoc PDMPCIBUSREG::pfnRegisterR3 */
    478478    DECLR3CALLBACKMEMBER(int,       pfnRegisterR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, const char *pszName, int iDev));
    479     /** @copydoc PDMPCIBUSREG::pfnIORegionRegisterHC */
     479    /** @copydoc PDMPCIBUSREG::pfnIORegionRegisterR3 */
    480480    DECLR3CALLBACKMEMBER(int,       pfnIORegionRegisterR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iRegion, uint32_t cbRegion,
    481481                                                           PCIADDRESSSPACE enmType, PFNPCIIOREGIONMAP pfnCallback));
    482     /** @copydoc PDMPCIBUSREG::pfnSetConfigCallbacksHC */
     482    /** @copydoc PDMPCIBUSREG::pfnSetConfigCallbacksR3 */
    483483    DECLR3CALLBACKMEMBER(void,      pfnSetConfigCallbacksR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead,
    484484                                                             PPFNPCICONFIGREAD ppfnReadOld, PFNPCICONFIGWRITE pfnWrite, PPFNPCICONFIGWRITE ppfnWriteOld));
    485     /** @copydoc PDMPCIBUSREG::pfnSaveExecHC */
     485    /** @copydoc PDMPCIBUSREG::pfnSaveExecR3 */
    486486    DECLR3CALLBACKMEMBER(int,       pfnSaveExecR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PSSMHANDLE pSSMHandle));
    487     /** @copydoc PDMPCIBUSREG::pfnLoadExecHC */
     487    /** @copydoc PDMPCIBUSREG::pfnLoadExecR3 */
    488488    DECLR3CALLBACKMEMBER(int,       pfnLoadExecR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PSSMHANDLE pSSMHandle));
    489     /** @copydoc PDMPCIBUSREG::pfnFakePCIBIOSHC */
     489    /** @copydoc PDMPCIBUSREG::pfnFakePCIBIOSR3 */
    490490    DECLR3CALLBACKMEMBER(int,       pfnFakePCIBIOSR3,(PPDMDEVINS pDevIns));
    491491
    492492    /** Pointer to the PIC device instance - R0. */
    493493    R0PTRTYPE(PPDMDEVINS)           pDevInsR0;
    494     /** @copydoc PDMPCIBUSREG::pfnSetIrqHC */
     494    /** @copydoc PDMPCIBUSREG::pfnSetIrqR3 */
    495495    DECLR0CALLBACKMEMBER(void,      pfnSetIrqR0,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iIrq, int iLevel));
    496496
    497497    /** Pointer to PCI Bus device instance. */
    498     PPDMDEVINSGC                    pDevInsGC;
    499     /** @copydoc PDMPCIBUSREG::pfnSetIrqHC */
    500     DECLRCCALLBACKMEMBER(void,      pfnSetIrqGC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iIrq, int iLevel));
     498    PPDMDEVINSGC                    pDevInsRC;
     499    /** @copydoc PDMPCIBUSREG::pfnSetIrqR3 */
     500    DECLRCCALLBACKMEMBER(void,      pfnSetIrqRC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iIrq, int iLevel));
    501501} PDMPCIBUS;
    502502
  • trunk/src/VBox/VMM/VMMGC/PDMGCDevice.cpp

    r11219 r11224  
    220220    if (    pPciDev
    221221        &&  pPciBus
    222         &&  pPciBus->pDevInsGC)
     222        &&  pPciBus->pDevInsRC)
    223223    {
    224224        pdmLock(pVM);
    225         pPciBus->pfnSetIrqGC(pPciBus->pDevInsGC, pPciDev, iIrq, iLevel);
     225        pPciBus->pfnSetIrqRC(pPciBus->pDevInsRC, pPciDev, iIrq, iLevel);
    226226        pdmUnlock(pVM);
    227227    }
  • trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp

    r11219 r11224  
    248248    GEN_CHECK_OFF(PDM, aPciBuses[0].pDevInsR0);
    249249    GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSetIrqR0);
    250     GEN_CHECK_OFF(PDM, aPciBuses[0].pDevInsGC);
    251     GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSetIrqGC);
     250    GEN_CHECK_OFF(PDM, aPciBuses[0].pDevInsRC);
     251    GEN_CHECK_OFF(PDM, aPciBuses[0].pfnSetIrqRC);
    252252    GEN_CHECK_OFF(PDM, Pic);
    253253    GEN_CHECK_OFF(PDM, Pic.pDevInsR3);
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