From: Matt Peters Date: Tue, 14 Mar 2017 16:33:09 +0000 (-0400) Subject: igb_uio: support devices with only I/O BAR X-Git-Tag: spdx-start~4424 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=b61befb48cb339514af0fa62f4dab1f588613c08;p=dpdk.git igb_uio: support devices with only I/O BAR Allow the BAR setup to succeed if a device has at least 1 BAR region defined. Previously, the device probe would only succeed if at least one memory BAR existed, but there are devices that have only port I/O BARs. For example, on Virtual Box a virtio device has only a single I/O BAR because by default MSI-X is not enabled. While in qemu/kvm the virtio device has MSI-X enabled and therefore has both an I/O and Memory BAR. The following are excerpts from "lspci -nnvvvv -s 00:09.0" on both types of systems. Virtual Box: Region 0: I/O ports at d260 [size=32] Capabilities: [80] #00 [0000] QEMU/KVM: Region 0: I/O ports at c060 [size=32] Region 1: Memory at febd1000 (32-bit, non-prefetchable) [size=4K] Expansion ROM at feb80000 [disabled] [size=256K] Capabilities: [40] MSI-X: Enable+ Count=3 Masked- Vector table: BAR=1 offset=00000000 PBA: BAR=1 offset=00000800 Signed-off-by: Matt Peters Signed-off-by: Allain Legacy Acked-by: Ferruh Yigit --- diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index df41e457ad..a910eb899a 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -314,7 +314,7 @@ igbuio_setup_bars(struct pci_dev *dev, struct uio_info *info) } } - return (iom != 0) ? ret : -ENOENT; + return (iom != 0 || iop != 0) ? ret : -ENOENT; } #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)