VirtualBox

Changeset 36678 in vbox


Ignore:
Timestamp:
Apr 15, 2011 9:24:13 AM (14 years ago)
Author:
vboxsync
Message:

PCI: cleanups, R3 mapping work

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/pci.h

    r36630 r36678  
    5555 * This is used when registering a I/O region.
    5656 */
    57 /** Note: There are all sorts of dirty dependencies on the values in the
    58  *  pci device. Be careful when changing this.
     57/**
     58 * Defined by the PCI specification.
    5959 */
    6060typedef enum PCIADDRESSSPACE
     
    8888 * @param   enmType         One of the PCI_ADDRESS_SPACE_* values.
    8989 *
    90  * @remarks The address is *NOT* relative to pci_mem_base.
    9190 */
    9291typedef DECLCALLBACK(int) FNPCIIOREGIONMAP(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType);
     
    10241023 * Class representing PCI address. PCI device consist of
    10251024 * bus, device and function numbers. Generally device PCI
    1026  * address could be changed during runtime, but only by 
     1025 * address could be changed during runtime, but only by
    10271026 * an OS PCI driver.
    10281027 *
     
    11091108    bool valid() const
    11101109    {
    1111         return (miBus    != -1) 
    1112             && (miDevice != -1) 
     1110        return (miBus    != -1)
     1111            && (miDevice != -1)
    11131112            && (miFn     != -1);
    11141113    }
     
    11331132        if (cBufSize < (/* bus */ 2 + /* : */ 1 + /* device */ 2 + /* . */ 1 + /* function*/ 1 + /* \0 */1))
    11341133            return false;
    1135        
     1134
    11361135        if (valid())
    11371136            RTStrPrintf(szBuf, cBufSize, "%02x:%02x.%01x", miBus, miDevice, miFn);
    11381137        else
    11391138            RTStrPrintf(szBuf, cBufSize, "%s", "<bad>");
    1140        
     1139
    11411140        return true;
    11421141    }
  • trunk/src/VBox/Devices/Bus/DevPciIch9.cpp

    r36663 r36678  
    958958    pRegion->map_func    = pfnCallback;
    959959
    960     /* Set type in the config space. */
    961     uint32_t u32Address = ich9pciGetRegionReg(iRegion);
    962     uint32_t u32Value   =
    963           (((enmType & PCI_ADDRESS_SPACE_MEM_PREFETCH) != 0) ? (1 << 3) : 0)
    964         | (((enmType & PCI_ADDRESS_SPACE_IO) != 0)  ? 1 : 0);
    965     PCIDevSetDWord(pPciDev, u32Address, u32Value);
     960    /* Set type in the PCI config space. */
     961    uint32_t u32Value   = ((uint32_t)enmType) & (PCI_ADDRESS_SPACE_IO | PCI_ADDRESS_SPACE_BAR64 | PCI_ADDRESS_SPACE_MEM_PREFETCH);
     962    PCIDevSetDWord(pPciDev, ich9pciGetRegionReg(iRegion), u32Value);
    966963
    967964    return VINF_SUCCESS;
  • trunk/src/VBox/HostDrivers/VBoxPci/VBoxPci.c

    r36665 r36678  
    190190
    191191    vboxPciDevLock(pThis);
    192    
     192
    193193    if (pThis->IrqHandler.pfnIrqHandler)
    194194    {
     
    243243static DECLCALLBACK(int) vboxPciDevGetRegionInfo(PRAWPCIDEVPORT pPort,
    244244                                                 int32_t        iRegion,
    245                                                 RTHCPHYS       *pRegionStart,
    246                                                 uint64_t       *pu64RegionSize,
    247                                                 bool           *pfPresent,
     245                                                RTHCPHYS       *pRegionStart,
     246                                                uint64_t       *pu64RegionSize,
     247                                                bool           *pfPresent,
    248248                                                 uint32_t        *pfFlags)
    249249{
     
    266266static DECLCALLBACK(int) vboxPciDevMapRegion(PRAWPCIDEVPORT pPort,
    267267                                             int32_t        iRegion,
    268                                              RTHCPHYS       RegionStart,
    269                                              uint64_t       u64RegionSize,
     268                                             RTHCPHYS       RegionStart,
     269                                             uint64_t       u64RegionSize,
    270270                                             int32_t        fFlags,
    271271                                             RTR0PTR        *pRegionBase)
     
    288288static DECLCALLBACK(int) vboxPciDevUnmapRegion(PRAWPCIDEVPORT pPort,
    289289                                               int32_t        iRegion,
    290                                                RTHCPHYS       RegionStart,
    291                                                uint64_t       u64RegionSize,
     290                                               RTHCPHYS       RegionStart,
     291                                               uint64_t       u64RegionSize,
    292292                                               RTR0PTR        RegionBase)
    293293{
     
    307307 * @copydoc RAWPCIDEVPORT:: pfnPciCfgRead
    308308 */
    309 static DECLCALLBACK(int) vboxPciDevPciCfgRead(PRAWPCIDEVPORT pPort, uint32_t Register, PCIRAWMEMLOC *pValue)
     309static DECLCALLBACK(int) vboxPciDevPciCfgRead(PRAWPCIDEVPORT pPort,
     310                                              uint32_t       Register,
     311                                              PCIRAWMEMLOC   *pValue)
    310312{
    311313    PVBOXRAWPCIINS pThis = DEVPORT_2_VBOXRAWPCIINS(pPort);
     
    325327 * @copydoc RAWPCIDEVPORT:: pfnPciCfgWrite
    326328 */
    327 static DECLCALLBACK(int) vboxPciDevPciCfgWrite(PRAWPCIDEVPORT pPort, uint32_t Register, PCIRAWMEMLOC *pValue)
     329static DECLCALLBACK(int) vboxPciDevPciCfgWrite(PRAWPCIDEVPORT pPort,
     330                                               uint32_t       Register,
     331                                               PCIRAWMEMLOC   *pValue)
    328332{
    329333    PVBOXRAWPCIINS pThis = DEVPORT_2_VBOXRAWPCIINS(pPort);
     
    339343}
    340344
    341 static DECLCALLBACK(int) vboxPciDevRegisterIrqHandler(PRAWPCIDEVPORT pPort, PFNRAWPCIISR pfnHandler, void* pIrqContext, PCIRAWISRHANDLE *phIsr)
     345static DECLCALLBACK(int) vboxPciDevRegisterIrqHandler(PRAWPCIDEVPORT  pPort,
     346                                                      PFNRAWPCIISR    pfnHandler,
     347                                                      void*           pIrqContext,
     348                                                      PCIRAWISRHANDLE *phIsr)
    342349{
    343350    PVBOXRAWPCIINS pThis = DEVPORT_2_VBOXRAWPCIINS(pPort);
    344351    int     rc;
    345     int32_t iHostIrq = 0;   
     352    int32_t iHostIrq = 0;
    346353
    347354    if (pfnHandler == NULL)
     
    365372        }
    366373    }
    367        
    368     vboxPciDevUnlock(pThis);
    369 
    370     return rc;
    371 }
    372 
    373 static DECLCALLBACK(int) vboxPciDevUnregisterIrqHandler(PRAWPCIDEVPORT pPort, PCIRAWISRHANDLE hIsr)
     374
     375    vboxPciDevUnlock(pThis);
     376
     377    return rc;
     378}
     379
     380static DECLCALLBACK(int) vboxPciDevUnregisterIrqHandler(PRAWPCIDEVPORT  pPort,
     381                                                        PCIRAWISRHANDLE hIsr)
    374382{
    375383    PVBOXRAWPCIINS pThis = DEVPORT_2_VBOXRAWPCIINS(pPort);
     
    393401}
    394402
    395 static DECLCALLBACK(int) vboxPciDevPowerStateChange(PRAWPCIDEVPORT pPort, PCIRAWPOWERSTATE  aState, uint64_t *pu64Param)
     403static DECLCALLBACK(int) vboxPciDevPowerStateChange(PRAWPCIDEVPORT    pPort,
     404                                                    PCIRAWPOWERSTATE  aState,
     405                                                    uint64_t          *pu64Param)
    396406{
    397407    PVBOXRAWPCIINS pThis = DEVPORT_2_VBOXRAWPCIINS(pPort);
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