Hi Stephen,
    Thanks for the response.
    I've tried with two virtual NICs, each bound to VFIO, as you can see below. 

verghis@verghis-VirtualBox:~/dpdk-stable-22.11.1/build$ ../usertools/dpdk-devbind.py --status

Network devices using DPDK-compatible driver
============================================
0000:00:08.0 '79c970 [PCnet32 LANCE] 2000' drv=vfio-pci unused=pcnet32
0000:00:09.0 '79c970 [PCnet32 LANCE] 2000' drv=vfio-pci unused=pcnet32

Network devices using kernel driver
===================================
0000:00:03.0 '82540EM Gigabit Ethernet Controller 100e' if=enp0s3 drv=e1000 unused=vfio-pci *Active*

    I'm not sure I understand what you mean by 'is the virtual NIC in VirtualBox the same as virtio.  The
NICs are PCnet32 LANCE, a standard NIC, bound to VFIO.  In Linux Mint 21 VFIO is built into the kernel,
not a loadable module.
    And yet the basicfwd code cannot find even 1 VFIO port.  Very weird.  Any ideas?
    Thanks.

On Tue, Apr 18, 2023 at 6:47 PM Stephen Hemminger <stephen@networkplumber.org> wrote:
On Tue, 18 Apr 2023 17:14:21 -0700
Verghis Koshi <vkoshi@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@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@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@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.