Issues with basicfwd
Stephen Hemminger
stephen at networkplumber.org
Wed Apr 19 03:47:19 CEST 2023
On Tue, 18 Apr 2023 17:14:21 -0700
Verghis Koshi <vkoshi at gmail.com> wrote:
> It appears that the vdev_device_list is empty - isn't this where the
> probe function for VFIO lives?
>
> rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, vbus->name vdev
> vdev_probe, file ../drivers/bus/vdev/vdev.c, PROBE, &vdev_device_list
> 0x56337bb30d30
> vdev_probe, file ../drivers/bus/vdev/vdev.c, dev is (nil)
>
> This is how I call basicfwd, am I missing something?
>
> sudo examples/dpdk-skeleton -l 1 -n 4
>
> Thanks,.
>
> Verghis
>
>
>
>
> m
>
> On Tue, Apr 18, 2023 at 10:11 AM Verghis Koshi <vkoshi at gmail.com> wrote:
>
> > I'm having trouble running the basicfwd example and would appreciate
> > any help.
> > I'm running Linux Mint 21.1 inside VirtualBox, and I've created two
> > NICs:
> >
> > verghis at verghis-VirtualBox:~/dpdk-stable-22.11.1/build$
> > ../usertools/dpdk-devbind.py --status
> >
> > Network devices using DPDK-compatible driver
> > ============================================
> > 0000:00:03.0 '79c970 [PCnet32 LANCE] 2000' drv=vfio-pci unused=pcnet32
> >
> > Network devices using kernel driver
> > ===================================
> > 0000:00:08.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s8
> > drv=e1000 unused=vfio-pci *Active*
> >
> > The first is bound to vfio-pci, to be used by basicfwd, and the second
> > uses the normal e1000 driver.
> > But when I run the code, it doesn't seem to see the VFIO driver at
> > all; further, it seems to think that 00:08.0
> > is using a non-kernel driver - why?
> > Here's the debug output; it should pick up the single VFIO port. I
> > don't care about the 'even number of ports', that's
> > easy to fix.
> > My apologies if I'm overlooking something simple.
> >
> > verghis at verghis-VirtualBox:~/dpdk-stable-22.11.1/build$ sudo
> > examples/dpdk-skeleton -l 1 -n 4
> > EAL: Detected CPU lcores: 2
> > EAL: Detected NUMA nodes: 1
> > EAL: Detected static linkage of DPDK
> > EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
> > EAL: Selected IOVA mode 'VA'
> > EAL: VFIO support initialized
> > rte_vfio_enable, file ../lib/eal/linux/eal_vfio.c, VFIO support initialized
> > 0: examples/dpdk-skeleton (rte_dump_stack+0x42) [55bed7d42d62]
> > 1: examples/dpdk-skeleton (55bed6cbb000+0x23b39f) [55bed6ef639f]
> > 2: examples/dpdk-skeleton (55bed6cbb000+0x239211) [55bed6ef4211]
> > 3: examples/dpdk-skeleton (main+0xf) [55bed70ac51f]
> > 4: /lib/x86_64-linux-gnu/libc.so.6 (7fbde5fb2000+0x29d90) [7fbde5fdbd90]
> > 5: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0x80) [7fbde5fdbe40]
> > 6: examples/dpdk-skeleton (_start+0x25) [55bed7b86055]
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name auxiliary
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name dpaa_bus
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name fslmc
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name ifpga
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name pci
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:01.1
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:02.0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:03.0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:04.0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:05.0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:06.0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:07.0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:08.0
> > rte_pci_map_device, file ../drivers/bus/pci/linux/pci.c,
> > rte_pci_device->name 0000:00:08.0, dev->kdrv 0
> > pci_probe, file ../drivers/bus/pci/pci_common.c, dev->name 0000:00:0d.0
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name vmbus
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, bus->name dsa
> > rte_bus_probe, file ../lib/eal/common/eal_common_bus.c, vbus->name vdev
> > vdev_probe, file ../drivers/bus/vdev/vdev.c, PROBE, &vdev_device_list
> > 0x55bed8764d30
> > vdev_probe, file ../drivers/bus/vdev/vdev.c, dev is (nil)
> > TELEMETRY: No legacy callbacks, legacy socket not created
> > main, file ../examples/skeleton/basicfwd.c, nb_ports 0
> > EAL: Error - exiting with code: 1
> > Cause: Error: number of ports must be even
> >
> > Verghis
> >
You need to create two virtual nic's and bind them to VFIO which
will remove from the kernel driver. Not familiar with VirtualBox config.
Is the virtual NIC in Virtual Box is not the same as virtio.
If it depends on the proprietary kernel driver, then
you are unlikely to get DPDK to work in virtual box environment.
More information about the users
mailing list