Once upon a time, there was no driverctl, yet some crazy DPDK guys were using UIO for userspace packet processing. They came with their dpdk-devbind.py script and others started copy/pasting how to use it everywhere.
Time has passed, and driverctl is now widespread. driverctl offers persistency (across reboots) of the PCI device configuration. Prefer it and drop documentation about dpdk-devbind.py: the DPDK documentation already provides plenty examples and is more likely to be up to date for users who want to rely on it (besides, if any modification in this tool was to occur, the DPDK documentation is a better place where to look at). Also use more standard tools like ethtool to identify the PCI device backing a kernel netdev. Signed-off-by: David Marchand <david.march...@redhat.com> --- Documentation/howto/dpdk.rst | 8 +++-- Documentation/intro/install/dpdk.rst | 19 ++++++----- Documentation/topics/dpdk/phy.rst | 40 +++++------------------- Documentation/topics/dpdk/vhost-user.rst | 4 +-- 4 files changed, 25 insertions(+), 46 deletions(-) diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst index 73e630b07f..40a7e8fd8b 100644 --- a/Documentation/howto/dpdk.rst +++ b/Documentation/howto/dpdk.rst @@ -228,15 +228,17 @@ described in :ref:`dpdk-testpmd`. Once compiled, run the application:: When you finish testing, bind the vNICs back to kernel:: - $ $DPDK_DIR/usertools/dpdk-devbind.py --bind=virtio-pci 0000:00:03.0 - $ $DPDK_DIR/usertools/dpdk-devbind.py --bind=virtio-pci 0000:00:04.0 + $ driverctl unset-override 0000:00:03.0 + $ driverctl unset-override 0000:00:04.0 .. note:: Valid PCI IDs must be passed in above example. The PCI IDs can be retrieved like so:: - $ $DPDK_DIR/usertools/dpdk-devbind.py --status + $ driverctl -v list-devices | grep -iE '(ethernet|network)' + 0000:03:00.0 virtio-pci (Virtio network device) + 0000:04:00.0 virtio-pci (Virtio network device) More information on the dpdkvhostuserclient ports can be found in :doc:`/topics/dpdk/vhost-user`. diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index 6cff4d81e0..47d79335b2 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -249,14 +249,17 @@ To ensure VT-d is enabled in the kernel, run:: If VT-d is not enabled in the kernel, enable it now. -Once VT-d is correctly configured, load the required modules and bind the NIC -to the VFIO driver:: - - $ modprobe vfio-pci - $ /usr/bin/chmod a+x /dev/vfio - $ /usr/bin/chmod 0666 /dev/vfio/* - $ $DPDK_DIR/usertools/dpdk-devbind.py --bind=vfio-pci eth1 - $ $DPDK_DIR/usertools/dpdk-devbind.py --status +Once VT-d is correctly configured, bind the NIC to the VFIO driver:: + + $ ethtool -i enp0s3 | grep bus-info + bus-info: 0000:01:00.0 + + $ driverctl -v list-devices | grep -iE '(ethernet|network)' + 0000:01:00.0 virtio-pci (Virtio network device) + $ driverctl set-override 0000:01:00.0 vfio-pci + $ driverctl -v list-devices | grep -iE '(ethernet|network)' + 0000:01:00.0 vfio-pci [*] (Virtio network device) + Setup OVS ~~~~~~~~~ diff --git a/Documentation/topics/dpdk/phy.rst b/Documentation/topics/dpdk/phy.rst index 41b2c9132f..5d9a99013e 100644 --- a/Documentation/topics/dpdk/phy.rst +++ b/Documentation/topics/dpdk/phy.rst @@ -72,11 +72,13 @@ driver for the devices in kernel space. There are two different tools for binding drivers: :command:`driverctl` which is a generic tool for persistently configuring alternative device drivers, and :command:`dpdk-devbind` which is a DPDK-specific tool and whose changes do not -persist across reboots. In addition, there are two options available for this -kernel space driver - VFIO (Virtual Function I/O) and UIO (Userspace I/O) - -along with a number of drivers for each option. We will demonstrate examples of -both tools and will use the ``vfio-pci`` driver, which is the more secure, -robust driver of those available. More information can be found in the +persist across reboots. +In addition, there are two options available for this kernel space driver +- VFIO (Virtual Function I/O) and UIO (Userspace I/O) - along with a number +of drivers for each option. +We will demonstrate use of the generic tool and will use the ``vfio-pci`` +driver, which is the more secure, robust driver of those available. +More details and information about the alternatives can be found in the `DPDK drivers documentation`_. To list devices using :command:`driverctl`, run:: @@ -89,34 +91,6 @@ You can then bind one or more of these devices using the same tool:: $ driverctl set-override 0000:07:00.0 vfio-pci -Alternatively, to list devices using :command:`dpdk-devbind`, run:: - - $ dpdk-devbind --status - Network devices using DPDK-compatible driver - ============================================ - <none> - - Network devices using kernel driver - =================================== - 0000:07:00.0 'I350 Gigabit Network Connection 1521' if=enp7s0f0 drv=igb unused=igb_uio - 0000:07:00.1 'I350 Gigabit Network Connection 1521' if=enp7s0f1 drv=igb unused=igb_uio - - Other Network devices - ===================== - ... - -Once again, you can then bind one or more of these devices using the same -tool:: - - $ dpdk-devbind --bind=vfio-pci 0000:07:00.0 - -.. versionchanged:: 2.6.0 - - Open vSwitch 2.6.0 added support for DPDK 16.07, which in turn renamed the - former ``dpdk_nic_bind`` tool to ``dpdk-devbind``. - -For more information, refer to the `DPDK drivers documentation`_. - .. _DPDK drivers documentation: https://doc.dpdk.org/guides-24.11/linux_gsg/linux_drivers.html .. _dpdk-phy-multiqueue: diff --git a/Documentation/topics/dpdk/vhost-user.rst b/Documentation/topics/dpdk/vhost-user.rst index 20e8eb245b..76a5ec6638 100644 --- a/Documentation/topics/dpdk/vhost-user.rst +++ b/Documentation/topics/dpdk/vhost-user.rst @@ -415,8 +415,8 @@ Setup huge pages and DPDK devices using UIO:: $ mount -t hugetlbfs hugetlbfs /dev/hugepages # only if not already mounted $ modprobe uio $ insmod $DPDK_BUILD/kmod/igb_uio.ko - $ $DPDK_DIR/usertools/dpdk-devbind.py --status - $ $DPDK_DIR/usertools/dpdk-devbind.py -b igb_uio 00:03.0 00:04.0 + $ driverctl set-override 0000:00:03.0 igb_uio + $ driverctl set-override 0000:00:04.0 igb_uio .. note:: -- 2.49.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev