igb_uio: support devices with only I/O BAR
authorMatt Peters <matt.peters@windriver.com>
Tue, 14 Mar 2017 16:33:09 +0000 (12:33 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 15 Mar 2017 13:02:41 +0000 (14:02 +0100)
commitb61befb48cb339514af0fa62f4dab1f588613c08
treea53141bcbd16ac70c38c5bb76977d1364c233e21
parent5a11168d9bf3d687950e84a9ddc8e13a77a2ef2a
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 <matt.peters@windriver.com>
Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_eal/linuxapp/igb_uio/igb_uio.c