DPDK documentation to attach vmbus NICs to the correct dpdk hv_netvsc driver seems incomplete

Rishabh Shukla 5 Reputation points
2023-09-13T17:53:44.2433333+00:00

The DPDK's netvsc poll mode driver documentation seems incomplete: https://doc.dpdk.org/guides/nics/netvsc.html

It mentions following to detach a synthetic vmbus NIC from the netvsc driver and bind to uio_hv_generic kernel driver:

The first step is to identify the network device to override. VMBUS uses Universal Unique Identifiers ([UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)) to identify devices on the bus similar to how PCI uses Domain:Bus:Function. The UUID associated with a Linux kernel network device can be determined by looking at the sysfs information. To find the UUID for eth1 and store it in a shell variable:

DEV_UUID=$(basename $(readlink /sys/class/net/eth1/device))
There are several possible ways to assign the UIO device driver for a device. The easiest way (but only on 4.18 or later) is to use the [driverctl Device Driver control utility](https://gitlab.com/driverctl/driverctl) to override the normal kernel device.

driverctl -b vmbus set-override $DEV_UUID uio_hv_generic
Any settings done with driverctl are by default persistent and will be reapplied on reboot.

On older kernels, the same effect can be had by manual sysfs bind and unbind operations:

NET_UUID="f8615163-df3e-46c5-913f-f2d2f965ed0e"
modprobe uio_hv_generic
echo $NET_UUID > /sys/bus/vmbus/drivers/uio_hv_generic/new_id
echo $DEV_UUID > /sys/bus/vmbus/drivers/hv_netvsc/unbind
echo $DEV_UUID > /sys/bus/vmbus/drivers/uio_hv_generic/bind

There is an end NOTE that says following:
NOTE: The dpdk-devbind.py script can not be used since it only handles PCI devices.

Can someone please tell me the next steps? How to direct dpdk to attach its hv_netvsc driver to the given vmbus NIC considering that the dpdk-devbind.py only supports PCI devices and expects PCI coorindates to be passed?

Hyper-V
Hyper-V
A Windows technology providing a hypervisor-based virtualization solution enabling customers to consolidate workloads onto a single server.
2,763 questions
0 comments No comments
{count} vote

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.