Many PMD driver options are disabled, including "BNX2X"!
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
dpdk (Ubuntu) |
Won't Fix
|
Low
|
Unassigned |
Bug Description
Guys,
After deep research on the following problem:
Xenial - OpenvSwitch with DPDK binding to 10G NIC, not working:
https:/
I realized that, going against the DPDK documentation:
http://
The option "CONFIG_
Take a look:
---
cd ~/sources/dpdk
apt source dpdk
cd dpdk-2.2.0
$ grep PMD config/
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
CONFIG_
---
I strong believe that this is the main problem with OpenvSwitch + DPDK on Ubuntu, that causes OVS to not find any "dpdkX" interfaces! Even if DPDK-Compatible driver is there, being used!!!
So, I added the following line:
---
-e 's,(CONFIG_
---
To DPDK's debian/rules file, it now looks like this:
---
build-config:
dh_testdir
$(MAKE) O=$(DPDK_
sed -ri -e 's,(RTE_
-e 's,(RTE_
-e 's,(RTE_
-e 's,(CONFIG_
-e 's,(CONFIG_
-e 's,(CONFIG_
-e 's,(CONFIG_
-e 's,(LIBRTE_
-e 's,(LIBRTE_
---
Note: There is a need to install:
sudo apt install zlib1g-dev
After that, now, I can see a very different behavior! Still not working... lol
But some progress, look, the error on OVS log is very different now:
---
ovs-ctl[2170]: EAL: PCI device 0000:01:00.0 on NUMA socket 0
ovs-ctl[2170]: EAL: probe driver: 14e4:168a rte_bnx2x_pmd
ovs-vswitchd[2551]: EAL: PCI device 0000:01:00.0 on NUMA socket 0
ovs-ctl[2170]: EAL: PCI memory mapped at 0x7f6180000000
ovs-ctl[2170]: EAL: PCI memory mapped at 0x7f6180800000
ovs-ctl[2170]: EAL: PCI memory mapped at 0x7f6181000000
ovs-vswitchd[2551]: EAL: probe driver: 14e4:168a rte_bnx2x_pmd
ovs-ctl[2170]: ovs-vswitchd: /home/ubuntu/
ovs-vswitchd[2551]: EAL: PCI memory mapped at 0x7f6180000000
ovs-vswitchd[2551]: EAL: PCI memory mapped at 0x7f6180800000
ovs-vswitchd[2551]: EAL: PCI memory mapped at 0x7f6181000000
ovs-ctl[2170]: Aborted (core dumped)
---
So, I tried something different, changed /etc/dpdk/
---
pci 0000:01:00.0 uio_pci_generic
pci 0000:01:00.1 uio_pci_generic
---
To this:
---
pci 0000:01:00.0 vfio-pci
pci 0000:01:00.1 vfio-pci
---
And now, a completely different, error message (still not working):
---
ovs-vswitchd[2950]: EAL: PCI device 0000:01:00.0 on NUMA socket 0
ovs-vswitchd[2950]: EAL: probe driver: 14e4:168a rte_bnx2x_pmd
ovs-vswitchd[2950]: EAL: 0000:01:00.0 VFIO group is not viable!
ovs-vswitchd[2950]: EAL: Error - exiting with code: 1
ovs-vswitchd[2950]: Requested device 0000:01:00.0 cannot be used
---
It looks much better with VFIO! There is no more "core dumped"!
But still not working.
So, I'm opening this bug report, so you guys can enable the PMD drivers for all the remaining drivers, like BNX2X, MLX4 & 5, XENVIRT, QAT, PCAP and etc (maybe I am missing other DPDK options that we must enable! Lets take a deep look into those disabled options)...
However, I'm curious about the usage of BNX2X when with "uio_pci_generic", what is that firmware error followed by a core dump? Very intriguing...
BTW, when with VFIO, I added the following options "iommu=pt intel_iommu=on" to /etc/default/grub, otherwise, VFIO doesn't work.
And, after reading the VFIO OVS error message, "VFIO group is not viable", I google for it and I found the following blog post about this:
[IOMMU] The error of "VFIO group is not viable":
http://
So, I think that I am almost there! It is just a matter of configuring this VFIO group thing but, I have no idea about how to do that... :-P
Christian is using ixgbe driver, which have PMD enabled by default! That's why his setup works (ixgbe), and mine doesn't (bnx2x), am I right? Look:
---
.../dpdk-2.2.0$ grep -i ixgbe_pmd config/
CONFIG_
---
I can't think about any other reason for this problem... PMD is disabled for many drivers!
It is Friday night, long week... I'll play with this during weekend, for sure! ^_^
Cheers!
Thiago
So,
I managed to include all NICs under the same IOMMU Group, like this:
---
dpdk_nic_bind --status
Network devices using DPDK-compatible driver ======= ======= ======= ======= ======= ==
=======
0000:01:00.0 'NetXtreme II BCM57800 1/10 Gigabit Ethernet' drv=vfio-pci unused=bnx2x
0000:01:00.1 'NetXtreme II BCM57800 1/10 Gigabit Ethernet' drv=vfio-pci unused=bnx2x
0000:01:00.2 'NetXtreme II BCM57800 1/10 Gigabit Ethernet' drv=vfio-pci unused=bnx2x
0000:01:00.3 'NetXtreme II BCM57800 1/10 Gigabit Ethernet' drv=vfio-pci unused=bnx2x
Network devices using kernel driver ======= ======= ======= =======
=======
<none>
Other network devices ======= =======
=======
<none>
---
However, now, OVS+DPDK doesn't complain anymore about the "VFIO group is not viable", but, I'm seeing now the very same error when with "uio_pci_generic", no firmware:
-- cpuset= [0]) cpuset= [0]) 0x0000, 0x1000:0xf000 sources/ dpdk/dpdk- 2.2.0/drivers/ net/bnx2x/ bnx2x_ethdev. c:453: bnx2x_common_ dev_init: Assertion `sc->firmware' failed. 0x0000, 0x1000:0xf000
ovs-vswitchd[3007]: EAL: TSC frequency is ~2299998 KHz
ovs-ctl[2975]: EAL: Master lcore 0 is ready (tid=f8604b00;
ovs-ctl[2975]: EAL: PCI device 0000:01:00.0 on NUMA socket 0
ovs-ctl[2975]: EAL: probe driver: 14e4:168a rte_bnx2x_pmd
ovs-vswitchd[3007]: EAL: Master lcore 0 is ready (tid=f8604b00;
ovs-vswitchd[3007]: EAL: PCI device 0000:01:00.0 on NUMA socket 0
ovs-vswitchd[3007]: EAL: probe driver: 14e4:168a rte_bnx2x_pmd
ovs-ctl[2975]: EAL: PCI memory mapped at 0x7f3840000000
ovs-ctl[2975]: EAL: PCI memory mapped at 0x7f3840800000
ovs-ctl[2975]: EAL: Trying to map BAR 4 that contains the MSI-X table. Trying offsets: 0x40000000000:
ovs-ctl[2975]: EAL: PCI memory mapped at 0x7f3841001000
ovs-ctl[2975]: ovs-vswitchd: /home/ubuntu/
ovs-vswitchd[3007]: EAL: PCI memory mapped at 0x7f3840000000
ovs-vswitchd[3007]: EAL: PCI memory mapped at 0x7f3840800000
ovs-vswitchd[3007]: EAL: Trying to map BAR 4 that contains the MSI-X table. Trying offsets: 0x40000000000:
ovs-vswitchd[3007]: EAL: PCI memory mapped at 0x7f3841001000
ovs-ctl[2975]: Aborted (core dumped)
ovs-ctl[2975]: * Starting ovs-vswitchd
ovs-ctl[2975]: * Enabling remote OVSDB managers
---
So, the problem now, looks like the OVS with DPDK is unable to find the BNX2X firmware, but I have the linux-firmware package, that contains the bnx firmwares...
Cheers!
Thiago