[dpdk-dev] [PATCH 1/2] doc: Update GSG for uio_pci_generic use

Iremonger, Bernard bernard.iremonger at intel.com
Wed Feb 25 13:14:15 CET 2015



> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Bruce Richardson
> Sent: Tuesday, February 24, 2015 4:28 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH 1/2] doc: Update GSG for uio_pci_generic use
> 
> Since DPDK now has support for the in-tree uio_pci_generic driver, update the GSG document to
> reference this module, and to use it in preference to the igb_uio driver, which is DPDK-specific.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> ---
>  doc/guides/linux_gsg/build_dpdk.rst        | 63 +++++++++++++++++-------------
>  doc/guides/linux_gsg/build_sample_apps.rst |  5 ++-
>  doc/guides/linux_gsg/enable_func.rst       |  2 +
>  3 files changed, 40 insertions(+), 30 deletions(-)
> 
> diff --git a/doc/guides/linux_gsg/build_dpdk.rst b/doc/guides/linux_gsg/build_dpdk.rst
> index d09c69d..255d6dc 100644
> --- a/doc/guides/linux_gsg/build_dpdk.rst
> +++ b/doc/guides/linux_gsg/build_dpdk.rst
> @@ -133,7 +133,8 @@ use the make config T=<target> command:
> 
>  .. warning::
> 
> -    The igb_uio module must be compiled with the same kernel as the one running on the target.
> +    Any kernel modules to be used, e.g. igb_uio, kni, must be compiled with the
> +    same kernel as the one running on the target.
>      If the DPDK is not being built on the target machine,
>      the RTE_KERNELDIR environment variable should be used to point the compilation at a copy of the
> kernel version to be used on the target machine.
> 
> @@ -154,28 +155,29 @@ Browsing the Installed DPDK Environment Target
> 
>  Once a target is created it contains all libraries and header files for the DPDK environment that are
> required to build customer applications.
>  In addition, the test and testpmd applications are built under the build/app directory, which may be
> used for testing.
> -In the case of Linux, a kmod  directory is also present that contains a module to install:
> +A kmod  directory is also present that contains kernel modules which may be loaded if needed:
> 
>  .. code-block:: console
> 
>      $ ls x86_64-native-linuxapp-gcc
>      app build hostapp include kmod lib Makefile
> 
> -Loading the DPDK igb_uio Module
> --------------------------------
> +Loading Modules to Enable Userspace IO for DPDK
> +-----------------------------------------------
> 
> -To run any DPDK application, the igb_uio module can be loaded into the running kernel.
> -The module is found in the kmod sub-directory of the DPDK target directory.
> -This module should be loaded using the insmod command as shown below (assuming that the
> current directory is the DPDK target directory).
> -In many cases, the uio support in the Linux* kernel is compiled as a module rather than as part of the
> kernel, -so it is often necessary to load the uio module first:


Hi Bruce,

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?
 
> +To run any DPDK application, a suitable uio module can be loaded into the running kernel.
> +In most cases, the standard uio_pci_generic module included in the
> +linux kernel can provide the uio capability. This module can be loaded
> +using the command
> 
>  .. code-block:: console
> 
> -    sudo modprobe uio
> -    sudo insmod kmod/igb_uio.ko

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?

> +    sudo modprobe uio_pci_generic
> 
> -Since DPDK release 1.7 provides VFIO support, compilation and use of igb_uio module has become
> optional for platforms that support using VFIO.
> +As an alternative to the uio_pci_generic, the DPDK also includes the
> +igb_uio module which can be found in the kmod subdirectory referred to above.
> +
> +Since DPDK release 1.7 onward provides VFIO support, use of UIO is
> +optional for platforms that support using VFIO.
> 
>  Loading VFIO Module
>  -------------------
> @@ -195,24 +197,29 @@ Also, to use VFIO, both kernel and BIOS must support and be configured to
> use IO  For proper operation of VFIO when running DPDK applications as a non-privileged user, correct
> permissions should also be set up.
>  This can be done by using the DPDK setup script (called setup.sh and located in the tools directory).
> 
> -Binding and Unbinding Network Ports to/from the igb_uioor VFIO Modules
> +Binding and Unbinding Network Ports to/from the Kernel Modules
>  ----------------------------------------------------------------------
> 
>  As of release 1.4, DPDK applications no longer automatically unbind all supported network ports from
> the kernel driver in use.
> -Instead, all ports that are to be used by an DPDK application must be bound to the igb_uio or vfio-pci
> module before the application is run.
> +Instead, all ports that are to be used by an DPDK application must be
> +bound to the uio_pci_generic, igb_uio or vfio-pci module before the application is run.
>  Any network ports under Linux* control will be ignored by the DPDK poll-mode drivers and cannot be
> used by the application.
> 
>  .. warning::
> 
>      The DPDK will, by default, no longer automatically unbind network ports from the kernel driver at
> startup.
> -    Any ports to be used by an DPDK application must be unbound from Linux* control and bound to
> the igb_uio or vfio-pci module before the application is run.
> +    Any ports to be used by an DPDK application must be unbound from Linux* control and
> +    bound to the uio_pci_generic, igb_uio or vfio-pci module before the application is run.
> 
> -To bind ports to the igb_uio or vfio-pci module for DPDK use, and then subsequently return ports to
> Linux* control,
> +To bind ports to the uio_pci_generic, igb_uio or vfio-pci module for
> +DPDK use, and then subsequently return ports to Linux* control,
>  a utility script called dpdk_nic _bind.py is provided in the tools subdirectory.
>  This utility can be used to provide a view of the current state of the network ports on the system, -
> and to bind and unbind those ports from the different kernel modules, including igb_uio and vfio-pci.
> +and to bind and unbind those ports from the different kernel modules, including the uio and vfio
> modules.
>  The following are some examples of how the script can be used.
>  A full description of the script and its parameters can be obtained by calling the script with the --help
> or --usage options.
> +Note that the uio or vfio kernel modules to be used, should be loaded
> +into the kernel before running the dpdk_nic_bind.py script.
> 
>  .. warning::
> 
> @@ -235,33 +242,33 @@ To see the status of all network ports on the system:
> 
>      root at host:DPDK# ./tools/dpdk_nic_bind.py --status
> 
> -    Network devices using IGB_UIO driver
> -    ====================================
> -    0000:82:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=ixgbe
> -    0000:82:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=ixgbe

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?

> +    Network devices using DPDK-compatible driver
> +    ============================================
> +    0000:82:00.0 '82599EB 10-Gigabit SFI/SFP+ Network Connection' drv=uio_pci_generic
> unused=ixgbe
> +    0000:82:00.1 '82599EB 10-Gigabit SFI/SFP+ Network Connection'
> + drv=uio_pci_generic unused=ixgbe
> 
>      Network devices using kernel driver
>      ===================================
> -    0000:04:00.0 'I350 Gigabit Network Connection' if=em0 drv=igb unused=igb_uio *Active*
> -    0000:04:00.1 'I350 Gigabit Network Connection' if=eth1 drv=igb unused=igb_uio
> -    0000:04:00.2 'I350 Gigabit Network Connection' if=eth2 drv=igb unused=igb_uio
> -    0000:04:00.3 'I350 Gigabit Network Connection' if=eth3 drv=igb unused=igb_uio

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?

> +    0000:04:00.0 'I350 Gigabit Network Connection' if=em0 drv=igb unused=uio_pci_generic *Active*
> +    0000:04:00.1 'I350 Gigabit Network Connection' if=eth1 drv=igb unused=uio_pci_generic
> +    0000:04:00.2 'I350 Gigabit Network Connection' if=eth2 drv=igb unused=uio_pci_generic
> +    0000:04:00.3 'I350 Gigabit Network Connection' if=eth3 drv=igb
> + unused=uio_pci_generic
> 
>      Other network devices
>      =====================
>      <none>
> 
> -To bind device eth1, 04:00.1, to the igb_uio driver:

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?

> +To bind device eth1, 04:00.1, to the uio_pci_generic driver:
> 
>  .. code-block:: console
> 
> -    root at host:DPDK# ./tools/dpdk_nic_bind.py --bind=igb_uio 04:00.1

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?

> +    root at host:DPDK# ./tools/dpdk_nic_bind.py --bind=uio_pci_generic
> + 04:00.1
> 
>  or, alternatively,
> 
>  .. code-block:: console
> 
> -    root at host:DPDK# ./tools/dpdk_nic_bind.py --bind=igb_uio eth1

Should the information about igb_uio be retained alongside the new information about uio_pci_generic?

> +    root at host:DPDK# ./tools/dpdk_nic_bind.py --bind=uio_pci_generic
> + eth1
> 
>  To restore device 82:00.0 to its original kernel binding:
> 
> diff --git a/doc/guides/linux_gsg/build_sample_apps.rst
> b/doc/guides/linux_gsg/build_sample_apps.rst
> index 40d1eb7..1abe99c 100644
> --- a/doc/guides/linux_gsg/build_sample_apps.rst
> +++ b/doc/guides/linux_gsg/build_sample_apps.rst
> @@ -99,7 +99,8 @@ Running a Sample Application
> 
>  .. warning::
> 
> -    Any ports to be used by the application must be already bound to the igb_uio module, as described
> in Section 3.5, prior to running the application.
> +    Any ports to be used by the application must be already bound to an appropriate kernel
> +    module, as described in Section 3.5, prior to running the application.
> 
>  The application is linked with the DPDK target environment's Environmental Abstraction Layer (EAL)
> library,  which provides some options that are generic to every DPDK application.
> @@ -174,7 +175,7 @@ This can be useful when using other processors to understand the mapping of
> the  .. note::
> 
>      A more graphical view of the logical core layout may be obtained using the lstopo Linux utility.
> -    On Fedora* 18, this may be installed and run using the following command:
> +    On Fedora* Linux, this may be installed and run using the following command:
> 
>  .. code-block:: console
> 
> diff --git a/doc/guides/linux_gsg/enable_func.rst b/doc/guides/linux_gsg/enable_func.rst
> index 3590000..9db3b5a 100644
> --- a/doc/guides/linux_gsg/enable_func.rst
> +++ b/doc/guides/linux_gsg/enable_func.rst
> @@ -98,6 +98,8 @@ the Linux user account being used to run the DPDK application has access to them
> 
>  *   The userspace-io device files in  /dev, for example,  /dev/uio0, /dev/uio1, and so on
> 
> +*   The userspace-io sysfs config and resource files, for example for uio0:
> /sys/class/uio/uio0/device/config /sys/class/uio/uio0/device/resource*
> +
>  *   If the HPET is to be used,  /dev/hpet
> 
>  .. note::
> --
> 2.1.0

Regards,

Bernard.



More information about the dev mailing list