VirtualBox

Changeset 11224

Show
Ignore:
Timestamp:
08/07/08 20:25:15 (4 months ago)
Author:
vboxsync
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/pdmdev.h

    r11220 r11224  
    418418     *                          If negative, the pci bus device will assign one. 
    419419     */ 
    420     DECLR3CALLBACKMEMBER(int, pfnRegisterHC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, const char *pszName, int iDev)); 
     420    DECLR3CALLBACKMEMBER(int, pfnRegisterR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, const char *pszName, int iDev)); 
    421421 
    422422    /** 
     
    431431     * @param   pfnCallback     Callback for doing the mapping. 
    432432     */ 
    433     DECLR3CALLBACKMEMBER(int, pfnIORegionRegisterHC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iRegion, uint32_t cbRegion, PCIADDRESSSPACE enmType, PFNPCIIOREGIONMAP pfnCallback)); 
     433    DECLR3CALLBACKMEMBER(int, pfnIORegionRegisterR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iRegion, uint32_t cbRegion, PCIADDRESSSPACE enmType, PFNPCIIOREGIONMAP pfnCallback)); 
    434434 
    435435    /** 
     
    448448     * @thread  EMT 
    449449     */ 
    450     DECLR3CALLBACKMEMBER(void, pfnSetConfigCallbacksHC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead, PPFNPCICONFIGREAD ppfnReadOld, 
     450    DECLR3CALLBACKMEMBER(void, pfnSetConfigCallbacksR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead, PPFNPCICONFIGREAD ppfnReadOld, 
    451451                                                        PFNPCICONFIGWRITE pfnWrite, PPFNPCICONFIGWRITE ppfnWriteOld)); 
    452452 
     
    459459     * @param   iLevel          IRQ level. See the PDM_IRQ_LEVEL_* \#defines. 
    460460     */ 
    461     DECLR3CALLBACKMEMBER(void, pfnSetIrqHC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iIrq, int iLevel)); 
     461    DECLR3CALLBACKMEMBER(void, pfnSetIrqR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, int iIrq, int iLevel)); 
    462462 
    463463    /** 
     
    469469     * @param   pSSMHandle      The handle to save the state to. 
    470470     */ 
    471     DECLR3CALLBACKMEMBER(int, pfnSaveExecHC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PSSMHANDLE pSSMHandle)); 
     471    DECLR3CALLBACKMEMBER(int, pfnSaveExecR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PSSMHANDLE pSSMHandle)); 
    472472 
    473473    /** 
     
    479479     * @param   pSSMHandle      The handle to the saved state. 
    480480     */ 
    481     DECLR3CALLBACKMEMBER(int, pfnLoadExecHC,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PSSMHANDLE pSSMHandle)); 
     481    DECLR3CALLBACKMEMBER(int, pfnLoadExecR3,(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PSSMHANDLE pSSMHandle)); 
    482482 
    483483    /** 
     
    489489     * @param   pDevIns     Device instance of the first bus. 
    490490     */ 
    491     DECLR3CALLBACKMEMBER(int, pfnFakePCIBIOSHC,(PPDMDEVINS pDevIns)); 
    492  
    493     /** The name of the SetIrq GC entry point. */ 
    494     const char         *pszSetIrqGC; 
     491    DECLR3CALLBACKMEMBER(int, pfnFakePCIBIOSR3,(PPDMDEVINS pDevIns)); 
     492 
     493    /** The name of the SetIrq RC entry point. */ 
     494    const char         *pszSetIrqRC; 
    495495 
    496496    /** The name of the SetIrq R0 entry point. */ 
  • 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->pszSetIrqG
    2389         &&  !VALID_PTR(pPciBusReg->pszSetIrqGC)) 
    2390     { 
    2391         Assert(VALID_PTR(pPciBusReg->pszSetIrqGC)); 
     2388    if (    pPciBusReg->pszSetIrqR
     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); 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy