X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbus%2Fpci%2Fprivate.h;h=367cdd9a65bc011c90783c8eeeb20bacec1b12e5;hb=8c98e3c539625b6dbdf8acb1817b55eae101e537;hp=88fa587e74dc3a2feebc00cf5e27121e7140bb2c;hpb=fd4ab1fe9c1e48d0f66eae59ab7d065411b78128;p=dpdk.git diff --git a/drivers/bus/pci/private.h b/drivers/bus/pci/private.h index 88fa587e74..367cdd9a65 100644 --- a/drivers/bus/pci/private.h +++ b/drivers/bus/pci/private.h @@ -10,18 +10,12 @@ #include #include +extern struct rte_pci_bus rte_pci_bus; + struct rte_pci_driver; struct rte_pci_device; -/** - * Probe the PCI bus - * - * @return - * - 0 on success. - * - !0 on error. - */ -int -rte_pci_probe(void); +extern struct rte_pci_bus rte_pci_bus; /** * Scan the content of the PCI bus, and the devices in the devices @@ -33,40 +27,21 @@ rte_pci_probe(void); int rte_pci_scan(void); /** - * Probe the single PCI device. - * - * Scan the content of the PCI bus, and find the pci device specified by pci - * address, then call the probe() function for registered driver that has a - * matching entry in its id_table for discovered device. - * - * @param addr - * The PCI Bus-Device-Function address to probe. - * @return - * - 0 on success. - * - Negative on error. + * Find the name of a PCI device. */ -int rte_pci_probe_one(const struct rte_pci_addr *addr); +void +pci_name_set(struct rte_pci_device *dev); /** - * Close the single PCI device. + * Validate whether a device with given PCI address should be ignored or not. * - * Scan the content of the PCI bus, and find the pci device specified by pci - * address, then call the remove() function for registered driver that has a - * matching entry in its id_table for discovered device. - * - * @param addr - * The PCI Bus-Device-Function address to close. + * @param pci_addr + * PCI address of device to be validated * @return - * - 0 on success. - * - Negative on error. - */ -int rte_pci_detach(const struct rte_pci_addr *addr); - -/** - * Find the name of a PCI device. + * true: if device is to be ignored, + * false: if device is to be scanned, */ -void -pci_name_set(struct rte_pci_device *dev); +bool rte_pci_ignore_device(const struct rte_pci_addr *pci_addr); /** * Add a PCI device to the PCI Bus (append to PCI Device list). This function @@ -93,16 +68,6 @@ void rte_pci_add_device(struct rte_pci_device *pci_dev); void rte_pci_insert_device(struct rte_pci_device *exist_pci_dev, struct rte_pci_device *new_pci_dev); -/** - * Remove a PCI device from the PCI Bus. This sets to NULL the bus references - * in the PCI device object as well as the generic device object. - * - * @param pci_device - * PCI device to be removed from PCI Bus - * @return void - */ -void rte_pci_remove_device(struct rte_pci_device *pci_device); - /** * Update a pci device object by asking the kernel for the latest information. * @@ -116,16 +81,6 @@ void rte_pci_remove_device(struct rte_pci_device *pci_device); */ int pci_update_device(const struct rte_pci_addr *addr); -/** - * Unbind kernel driver for this device - * - * This function is private to EAL. - * - * @return - * 0 on success, negative on error - */ -int pci_unbind_kernel_driver(struct rte_pci_device *dev); - /** * Map the PCI resource of a PCI device in virtual memory * @@ -172,6 +127,18 @@ int pci_uio_alloc_resource(struct rte_pci_device *dev, void pci_uio_free_resource(struct rte_pci_device *dev, struct mapped_pci_resource *uio_res); +/** + * Remap the PCI resource of a PCI device in anonymous virtual memory. + * + * @param dev + * Point to the struct rte pci device. + * @return + * - On success, zero. + * - On failure, a negative value. + */ +int +pci_uio_remap_resource(struct rte_pci_device *dev); + /** * Map device memory to uio resource * @@ -206,6 +173,17 @@ int rte_pci_match(const struct rte_pci_driver *pci_drv, const struct rte_pci_device *pci_dev); +/** + * OS specific callbacks for rte_pci_get_iommu_class + * + */ +bool +pci_device_iommu_support_va(const struct rte_pci_device *dev); + +enum rte_iova_mode +pci_device_iova_mode(const struct rte_pci_driver *pci_drv, + const struct rte_pci_device *pci_dev); + /** * Get iommu class of PCI devices on the bus. * And return their preferred iova mapping mode. @@ -216,4 +194,27 @@ rte_pci_match(const struct rte_pci_driver *pci_drv, enum rte_iova_mode rte_pci_get_iommu_class(void); +/* + * Iterate over internal devices, + * matching any device against the provided + * string. + * + * @param start + * Iteration starting point. + * + * @param str + * Device string to match against. + * + * @param it + * (unused) iterator structure. + * + * @return + * A pointer to the next matching device if any. + * NULL otherwise. + */ +void * +rte_pci_dev_iterate(const void *start, + const char *str, + const struct rte_dev_iterator *it); + #endif /* _PCI_PRIVATE_H_ */