[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