[dpdk-dev] Ports not detected by IGB_UIO in DPDK 1.7.1 in QEMU_KVM environment

Manoj Viswanath manoj.viswanath at gmail.com
Wed Nov 5 10:58:13 CET 2014


Hi,

I have a DPDK application running on QEMU-KVM environment using DPDK 1.6.0.
I am trying to port the same to DPDK version 1.7.1.

I am using Virt-manager GUI to assign e1000 emulated port to the VM. This
works fine in DPDK 1.6.0. The device is identified by IGB_UIO and
initialized by my application as expected.

However in case of DPDK 1.7.1, the emulated e1000 devices do not seem to be
recognized.
Following is my analysis:

1. The API pci_get_uio_dev() is returning ERROR. This is called from
pci_uio_map_resource() in the flow of PCI PROBE [rte_eal_pci_probe()].

2. Due to this, the PCI device is not getting mapped to the correct driver
(EM
​ Driver​
).

3. The reason for the error in [1] appears to be that "uio" sub-directory
doesn't seem to be correctly created for interfaces assigned to this VM.

4. Upon further analysis i found that IGB_UIO probe function
["igbuio_pci_probe()"] is not getting triggered indicating the port has *not
been assigned* to the IGB_UIO.

Kindly refer to the attachments:-
- "Output of sys-bus-pci-devices" - indicating "uio" subdirectory not
created for PCI devices in case of DPDK 1.7.1
- "Output of lspci -v" - indicating device not bound to driver in case of
DPDK 1.7.1
- IGB_UIO init log snippet - indicating PCI devices not detected and
initialized by IGB_UIO in case of DPDK 1.7.1
- CONFIG file used for DPDK compilation

Not sure what has changed between 1.6.0 and 1.7.1 which is impacting this.

Could someone throw light in this regard as to what i may be missing ?

Thanks in advance.

Regards,
Manoj
-------------- next part --------------
----------------------------------------------
[A] IGB UIO INIT LOGS - VM running DPDK 1.6.0
----------------------------------------------

Oct 20 05:14:31 localhost kernel: Use MSIX interrupt by default
Oct 20 05:14:31 localhost kernel: Use MSIX interrupt by default

Oct 20 05:14:31 localhost kernel: igb_uio 0000:00:04.0: setting latency timer to
 64
Oct 20 05:14:31 localhost kernel: fail to enable pci msix, or not enough msix en
tries
Oct 20 05:14:31 localhost kernel: fail to enable pci msix, or not enough msix en
tries
Oct 20 05:14:31 localhost kernel: uio device registered with irq b	-------------------------------------> PCI device bound to driver
Oct 20 05:14:31 localhost kernel: uio device registered with irq b

Oct 20 05:14:31 localhost kernel: igb_uio 0000:00:08.0: setting latency timer to
 64
Oct 20 05:14:31 localhost kernel: fail to enable pci msix, or not enough msix en
tries
Oct 20 05:14:31 localhost kernel: fail to enable pci msix, or not enough msix en
tries
Oct 20 05:14:31 localhost kernel: uio device registered with irq b	-------------------------------------> PCI device bound to driver
Oct 20 05:14:31 localhost kernel: uio device registered with irq b

----------------------------------------------
[B] IGB UIO INIT LOGS - VM running DPDK 1.7.1
----------------------------------------------

Oct 20 05:10:40 localhost kernel: igb_uio: Use MSIX interrupt by default
Oct 20 05:10:40 localhost kernel: igb_uio: Use MSIX interrupt by default
=====> No output for PCI initialization by IGB_UIO 
-------------- next part --------------
-------------------------
[VM-2 running DPDK 1.6.0]
-------------------------
00:08.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controll
er (rev 03)
    Subsystem: Red Hat, Inc Device 1100
    Flags: bus master, fast devsel, latency 0, IRQ 11
    Memory at f20a0000 (32-bit, non-prefetchable) [size=128K]
    I/O ports at c140 [size=64]
    Expansion ROM at f20c0000 [disabled] [size=128K]
    Kernel driver in use: igb_uio=================> Driver binding succesfull
    Kernel modules: igb_uio	==================> Driver binding succesfull

-------------------------
[VM-1 running DPDK 1.7.1]
-------------------------
00:04.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controll
er (rev 03)
    Subsystem: Red Hat, Inc Device 1100
    Flags: fast devsel, IRQ 11
    Memory at f2040000 (32-bit, non-prefetchable) [size=128K]
    I/O ports at c080 [size=64]
    Expansion ROM at f2060000 [disabled] [size=128K]
===> Missing driver binding info

-------------- next part --------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ On VM-1 running DPDK 1.7.1 @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

bash-4.2# lspci | grep 82540EM
00:04.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
00:05.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)

##SYS-BUS
bash-4.2# ls /sys/bus/pci/devices/               
0000:00:00.0  0000:00:01.2  0000:00:03.0  0000:00:06.0
0000:00:01.0  0000:00:01.3  0000:00:04.0  0000:00:07.0
0000:00:01.1  0000:00:02.0  0000:00:05.0  0000:00:08.0

bash-4.2# ls /sys/bus/pci/devices/0000\:00\:04.0/
broken_parity_status      local_cpulist             resource0
class                     local_cpus                resource1
config                    modalias                  rom
consistent_dma_mask_bits  msi_bus                   subsystem/
device                    numa_node                 subsystem_device
dma_mask_bits             power/                    subsystem_vendor
enable                    remove                    uevent
firmware_node/            rescan                    vendor
irq                       resource                  
bash-4.2# ls /sys/bus/pci/devices/0000\:00\:04.0/uio    
ls: cannot access /sys/bus/pci/devices/0000:00:04.0/uio: No such file or directory	============================> No directory

bash-4.2# ls /sys/bus/pci/devices/0000\:00\:05.0/
broken_parity_status      local_cpulist             resource0
class                     local_cpus                resource1
config                    modalias                  rom
consistent_dma_mask_bits  msi_bus                   subsystem/
device                    numa_node                 subsystem_device
dma_mask_bits             power/                    subsystem_vendor
enable                    remove                    uevent
firmware_node/            rescan                    vendor
irq                       resource                  
bash-4.2# ls /sys/bus/pci/devices/0000\:00\:05.0/uio    
ls: cannot access /sys/bus/pci/devices/0000:00:05.0/uio: No such file or directory	============================> No directory
bash-4.2#

##SYS-DEVICES
bash-4.2# ls /sys/devices/pci0000\:00/
0000:00:00.0/  0000:00:01.3/  0000:00:05.0/  firmware_node/ 
0000:00:01.0/  0000:00:02.0/  0000:00:06.0/  pci_bus/       
0000:00:01.1/  0000:00:03.0/  0000:00:07.0/  power/         
0000:00:01.2/  0000:00:04.0/  0000:00:08.0/  uevent         
bash-4.2# ls /sys/devices/pci0000\:00/0000:00:04.0/uio
ls: cannot access /sys/devices/pci0000:00/0000:00:04.0/uio: No such file or directory	============================> No directory
bash-4.2# ls /sys/devices/pci0000\:00/0000:00:04.0/   
broken_parity_status	  enable	 msi_bus    resource0	      uevent
class			  firmware_node  numa_node  resource1	      vendor
config			  irq		 power	    rom
consistent_dma_mask_bits  local_cpulist  remove     subsystem
device			  local_cpus	 rescan     subsystem_device
dma_mask_bits		  modalias	 resource   subsystem_vendor
bash-4.2# 

bash-4.2# ls /sys/devices/pci0000\:00/0000:00:05.0/uio
ls: cannot access /sys/devices/pci0000:00/0000:00:05.0/uio: No such file or directory	============================> No directory

bash-4.2# ls /sys/devices/pci0000\:00/0000:00:05.0/
broken_parity_status	  enable	 msi_bus    resource0	      uevent
class			  firmware_node  numa_node  resource1	      vendor
config			  irq		 power	    rom
consistent_dma_mask_bits  local_cpulist  remove     subsystem
device			  local_cpus	 rescan     subsystem_device
dma_mask_bits		  modalias	 resource   subsystem_vendor



--------------------------------------------------------------------------------------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ On VM-2 running DPDK 1.6.0 @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

bash-4.2# lspci | grep 82540EM
00:04.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)
00:08.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 03)

##SYS-BUS
bash-4.2# /sys/bus/pci/devices/0000\:00\:04.0/uio/uio0/			============================> Directory created correctly
device/    maps/      portio/    power/     subsystem/ 
bash-4.2# ls /sys/bus/pci/devices/0000\:00\:04.0/uio/uio0/
dev  device  event  maps  name	portio	power  subsystem  uevent  version

bash-4.2# ls /sys/bus/pci/devices/0000\:00\:08.0/uio/uio1/		============================> Directory created correctly
dev  device  event  maps  name	portio	power  subsystem  uevent  version


##SYS-DEVICES
bash-4.2# ls /sys/devices/pci0000:00/0000:00:04.0/uio/uio0
dev  device  event  maps  name	portio	power  subsystem  uevent  version
bash-4.2# 



More information about the dev mailing list