[dpdk-dev] [PATCH] igb_uio: only check for pci bridge in supported by linux kernel

Ajit Khaparde ajit.khaparde at broadcom.com
Mon Apr 16 22:51:10 CEST 2018


From: Scott Branden <scott.branden at broadcom.com>

Starting from Linux v3.16 pci_is_bridge() is in linux/pci.h,
 in previous versions it is in drivers/pci/pci.h which is private header.

Fix build error when calling pci_is_bridge by not calling/supporting
pci_is_bridge with kernel versions before 3.16.

Signed-off-by: Scott Branden <scott.branden at broadcom.com>
Reported-by: Ferruh Yigit <ferruh.yigit at intel.com>
---
 kernel/linux/igb_uio/compat.h  | 4 ++++
 kernel/linux/igb_uio/igb_uio.c | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/kernel/linux/igb_uio/compat.h b/kernel/linux/igb_uio/compat.h
index ce456d4bb..b48c4cc91 100644
--- a/kernel/linux/igb_uio/compat.h
+++ b/kernel/linux/igb_uio/compat.h
@@ -132,3 +132,7 @@ static bool pci_check_and_mask_intx(struct pci_dev *pdev)
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)
 #define HAVE_PCI_MSI_MASK_IRQ 1
 #endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
+#define HAVE_PCI_IS_BRIDGE_API 1
+#endif
diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
index cbc5ab63a..cd9b7e721 100644
--- a/kernel/linux/igb_uio/igb_uio.c
+++ b/kernel/linux/igb_uio/igb_uio.c
@@ -473,10 +473,12 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	void *map_addr;
 	int err;
 
+#ifdef HAVE_PCI_IS_BRIDGE_API
 	if (pci_is_bridge(dev)) {
 		dev_warn(&dev->dev, "Ignoring PCI bridge device\n");
 		return -ENODEV;
 	}
+#endif
 
 	udev = kzalloc(sizeof(struct rte_uio_pci_dev), GFP_KERNEL);
 	if (!udev)
-- 
2.15.1 (Apple Git-101)



More information about the dev mailing list