diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/seastar/dpdk/doc/guides/platform | |
parent | Initial commit. (diff) | |
download | ceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/seastar/dpdk/doc/guides/platform')
-rw-r--r-- | src/seastar/dpdk/doc/guides/platform/bluefield.rst | 147 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/platform/dpaa.rst | 103 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/platform/dpaa2.rst | 109 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/platform/index.rst | 16 | ||||
-rw-r--r-- | src/seastar/dpdk/doc/guides/platform/octeontx.rst | 161 |
5 files changed, 536 insertions, 0 deletions
diff --git a/src/seastar/dpdk/doc/guides/platform/bluefield.rst b/src/seastar/dpdk/doc/guides/platform/bluefield.rst new file mode 100644 index 000000000..0bb58e50a --- /dev/null +++ b/src/seastar/dpdk/doc/guides/platform/bluefield.rst @@ -0,0 +1,147 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2019 Mellanox Technologies, Ltd + +Mellanox BlueField Board Support Package +======================================== + +This document has information about steps to setup Mellanox BlueField platform +and common offload HW drivers of **Mellanox BlueField** family SoC. + + +Supported BlueField family SoCs +------------------------------- + +- `BlueField <http://www.mellanox.com/page/products_dyn?product_family=256&mtag=soc_overview>`_ + + +Supported BlueField Platforms +----------------------------- + +- `BlueField SmartNIC <http://www.mellanox.com/page/products_dyn?product_family=275&mtag=bluefield_smart_nic>`_ +- `BlueField Reference Platforms <http://www.mellanox.com/page/products_dyn?product_family=286&mtag=bluefield_platforms>`_ +- `BlueField Controller Card <http://www.mellanox.com/page/products_dyn?product_family=288&mtag=bluefield_controller_card>`_ + + +Common Offload HW Drivers +------------------------- + +1. **NIC Driver** + + See :doc:`../nics/mlx5` for Mellanox mlx5 NIC driver information. + +2. **Cryptodev Driver** + + This is based on the crypto extension support of armv8. See + :doc:`../cryptodevs/armv8` for armv8 crypto driver information. + +.. note:: + + BlueField has a variant having no armv8 crypto extension support. + + +Steps To Setup Platform +----------------------- + +Toolchains, OS and drivers can be downloaded and installed individually from the +Web. But it is recommended to follow instructions at +`Mellanox BlueField Software Website +<http://www.mellanox.com/page/products_dyn?product_family=279&mtag=bluefield_software>`_. + + +Compile DPDK +------------ + +DPDK can be compiled either natively on BlueField platforms or cross-compiled on +an x86 based platform. + +Native Compilation +~~~~~~~~~~~~~~~~~~ + +Refer to :doc:`../nics/mlx5` for prerequisites. Either Mellanox OFED/EN or +rdma-core library with corresponding kernel drivers is required. + +make build +^^^^^^^^^^ + +.. code-block:: console + + make config T=arm64-bluefield-linuxapp-gcc + make -j + +meson build +^^^^^^^^^^^ + +.. code-block:: console + + meson build + ninja -C build + +Cross Compilation +~~~~~~~~~~~~~~~~~ + +Refer to :doc:`../linux_gsg/cross_build_dpdk_for_arm64` to install the cross +toolchain for ARM64. Base on that, additional header files and libraries are +required: + + - libibverbs + - libmnl + - libmlx5 + - libnl-3 + - libnl-route-3 + +Such header files and libraries can be cross-compiled and installed on to the +cross toolchain directory like depicted in +:ref:`arm_cross_build_getting_the_prerequisite_library`, but those can also be +simply copied from the filesystem of a working BlueField platform. The following +script can be run on a BlueField platform in order to create a supplementary +tarball for the cross toolchain. + +.. code-block:: console + + mkdir -p aarch64-linux-gnu/libc + pushd $PWD + cd aarch64-linux-gnu/libc + + # Copy libraries + mkdir -p lib64 + cp -a /lib64/libibverbs* lib64/ + cp -a /lib64/libmnl* lib64/ + cp -a /lib64/libmlx5* lib64/ + cp -a /lib64/libnl-3* lib64/ + cp -a /lib64/libnl-route-3* lib64/ + + # Copy header files + mkdir -p usr/include/infiniband + mkdir -p usr/include/libmnl + cp -a /usr/include/infiniband/ib_user_ioctl_verbs.h usr/include/infiniband/ + cp -a /usr/include/infiniband/mlx5*.h usr/include/infiniband/ + cp -a /usr/include/infiniband/tm_types.h usr/include/infiniband/ + cp -a /usr/include/infiniband/verbs*.h usr/include/infiniband/ + cp -a /usr/include/libmnl/libmnl.h usr/include/libmnl/ + + # Create supplementary tarball + popd + tar cf aarch64-linux-gnu-mlx.tar aarch64-linux-gnu/ + +Then, untar the tarball at the cross toolchain directory on the x86 host. + +.. code-block:: console + + cd $(dirname $(which aarch64-linux-gnu-gcc))/.. + tar xf aarch64-linux-gnu-mlx.tar + +make build +^^^^^^^^^^ + +.. code-block:: console + + make config T=arm64-bluefield-linuxapp-gcc + make -j CROSS=aarch64-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n + +meson build +^^^^^^^^^^^ + +.. code-block:: console + + meson build --cross-file config/arm/arm64_bluefield_linux_gcc + ninja -C build diff --git a/src/seastar/dpdk/doc/guides/platform/dpaa.rst b/src/seastar/dpdk/doc/guides/platform/dpaa.rst new file mode 100644 index 000000000..6005f2221 --- /dev/null +++ b/src/seastar/dpdk/doc/guides/platform/dpaa.rst @@ -0,0 +1,103 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2018 NXP + +NXP QorIQ DPAA Board Support Package +==================================== + +This doc has information about steps to setup QorIQ dpaa +based layerscape platform and information about common offload +hw block drivers of **NXP QorIQ DPAA** SoC family. + +Supported DPAA SoCs +-------------------- + +* LS1046A/LS1026A +* LS1043A/LS1023A + +More information about SoC can be found at `NXP Official Website +<https://www.nxp.com/products/processors-and-microcontrollers/arm-based- +processors-and-mcus/qoriq-layerscape-arm-processors:QORIQ-ARM>`_. + + +Common Offload HW Block Drivers +------------------------------- + +1. **Nics Driver** + + See :doc:`../nics/dpaa` for NXP dpaa nic driver information. + +2. **Cryptodev Driver** + + See :doc:`../cryptodevs/dpaa_sec` for NXP dpaa cryptodev driver information. + +3. **Eventdev Driver** + + See :doc:`../eventdevs/dpaa` for NXP dpaa eventdev driver information. + + +Steps To Setup Platform +----------------------- + +There are four main pre-requisites for executing DPAA PMD on a DPAA +compatible board: + +1. **ARM 64 Tool Chain** + + For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz>`_. + +2. **Linux Kernel** + + It can be obtained from `NXP's Github hosting <https://source.codeaurora.org/external/qoriq/qoriq-components/linux>`_. + +3. **Rootfile system** + + Any *aarch64* supporting filesystem can be used. For example, + Ubuntu 16.04 LTS (Xenial) or 18.04 (Bionic) userland which can be obtained + from `here + <http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04.1-base-arm64.tar.gz>`_. + +4. **FMC Tool** + + Before any DPDK application can be executed, the Frame Manager Configuration + Tool (FMC) need to be executed to set the configurations of the queues. This + includes the queue state, RSS and other policies. + This tool can be obtained from `NXP (Freescale) Public Git Repository <https://source.codeaurora.org/external/qoriq/qoriq-components/fmc>`_. + + This tool needs configuration files which are available in the + :ref:`DPDK Extra Scripts <extra_scripts>`, described below for DPDK usages. + +As an alternative method, DPAA PMD can also be executed using images provided +as part of SDK from NXP. The SDK includes all the above prerequisites necessary +to bring up a DPAA board. + +The following dependencies are not part of DPDK and must be installed +separately: + +- **NXP Linux SDK** + + NXP Linux software development kit (SDK) includes support for family + of QorIQ® ARM-Architecture-based system on chip (SoC) processors + and corresponding boards. + + It includes the Linux board support packages (BSPs) for NXP SoCs, + a fully operational tool chain, kernel and board specific modules. + + SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. + + +.. _extra_scripts: + +- **DPDK Extra Scripts** + + DPAA based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + + `DPDK Extras Scripts <https://source.codeaurora.org/external/qoriq/qoriq-components/dpdk-extras>`_. + +Currently supported by DPDK: + +- NXP SDK **2.0+** (preferred: LSDK 18.09). +- Supported architectures: **arm64 LE**. + +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` + to setup the basic DPDK environment. diff --git a/src/seastar/dpdk/doc/guides/platform/dpaa2.rst b/src/seastar/dpdk/doc/guides/platform/dpaa2.rst new file mode 100644 index 000000000..c21bb193f --- /dev/null +++ b/src/seastar/dpdk/doc/guides/platform/dpaa2.rst @@ -0,0 +1,109 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2018 NXP + +NXP QorIQ DPAA2 Board Support Package +===================================== + +This doc has information about steps to setup NXP QorIQ DPAA2 platform +and information about common offload hw block drivers of +**NXP QorIQ DPAA2** SoC family. + +Supported DPAA2 SoCs +-------------------- + +- LX2160A +- LS2084A/LS2044A +- LS2088A/LS2048A +- LS1088A/LS1048A + +More information about SoC can be found at `NXP Official Website +<https://www.nxp.com/products/processors-and-microcontrollers/arm-based- +processors-and-mcus/qoriq-layerscape-arm-processors:QORIQ-ARM>`_. + + +Common Offload HW Block Drivers +------------------------------- + +1. **Nics Driver** + + See :doc:`../nics/dpaa2` for NXP dpaa2 nic driver information. + +2. **Cryptodev Driver** + + See :doc:`../cryptodevs/dpaa2_sec` for NXP dpaa2 cryptodev driver information. + +3. **Eventdev Driver** + + See :doc:`../eventdevs/dpaa2` for NXP dpaa2 eventdev driver information. + +4. **Rawdev AIOP CMDIF Driver** + + See :doc:`../rawdevs/dpaa2_cmdif` for NXP dpaa2 AIOP command interface driver information. + +5. **Rawdev QDMA Driver** + + See :doc:`../rawdevs/dpaa2_qdma` for NXP dpaa2 QDMA driver information. + + +Steps To Setup Platform +----------------------- + +There are four main pre-requisites for executing DPAA2 PMD on a DPAA2 +compatible board: + +1. **ARM 64 Tool Chain** + + For example, the `*aarch64* Linaro Toolchain <https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-i686_aarch64-linux-gnu.tar.xz>`_. + +2. **Linux Kernel** + + It can be obtained from `NXP's Github hosting <https://source.codeaurora.org/external/qoriq/qoriq-components/linux>`_. + +3. **Rootfile system** + + Any *aarch64* supporting filesystem can be used. For example, + Ubuntu 16.04 LTS (Xenial) or 18.04 (Bionic) userland which can be obtained + from `here + <http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04.1-base-arm64.tar.gz>`_. + +4. **Resource Scripts** + + DPAA2 based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + +As an alternative method, DPAA2 PMD can also be executed using images provided +as part of SDK from NXP. The SDK includes all the above prerequisites necessary +to bring up a DPAA2 board. + +The following dependencies are not part of DPDK and must be installed +separately: + +- **NXP Linux SDK** + + NXP Linux software development kit (SDK) includes support for family + of QorIQ® ARM-Architecture-based system on chip (SoC) processors + and corresponding boards. + + It includes the Linux board support packages (BSPs) for NXP SoCs, + a fully operational tool chain, kernel and board specific modules. + + SDK and related information can be obtained from: `NXP QorIQ SDK <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_. + + +.. _extra_scripts: + +- **DPDK Extra Scripts** + + DPAA2 based resources can be configured easily with the help of ready scripts + as provided in the DPDK Extra repository. + + `DPDK Extras Scripts <https://source.codeaurora.org/external/qoriq/qoriq-components/dpdk-extras>`_. + +Currently supported by DPDK: + +- NXP SDK **2.0+** (preferred: LSDK 19.03). +- MC Firmware version **10.14.0** and higher. +- Supported architectures: **arm64 LE**. + +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` + to setup the basic DPDK environment. diff --git a/src/seastar/dpdk/doc/guides/platform/index.rst b/src/seastar/dpdk/doc/guides/platform/index.rst new file mode 100644 index 000000000..a17de2efb --- /dev/null +++ b/src/seastar/dpdk/doc/guides/platform/index.rst @@ -0,0 +1,16 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2017 Cavium, Inc + +Platform Specific Guides +======================== + +The following are platform specific guides and setup information. + +.. toctree:: + :maxdepth: 2 + :numbered: + + bluefield + dpaa + dpaa2 + octeontx diff --git a/src/seastar/dpdk/doc/guides/platform/octeontx.rst b/src/seastar/dpdk/doc/guides/platform/octeontx.rst new file mode 100644 index 000000000..7d1cb647d --- /dev/null +++ b/src/seastar/dpdk/doc/guides/platform/octeontx.rst @@ -0,0 +1,161 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2017 Cavium, Inc + +OCTEON TX Board Support Package +=============================== + +This doc has information about steps to setup OCTEON TX platform +and information about common offload hw block drivers of +**Cavium OCTEON TX** SoC family. + + +More information about SoC can be found at `Cavium, Inc Official Website +<http://www.cavium.com/OCTEON-TX_ARM_Processors.html>`_. + +Common Offload HW Block Drivers +------------------------------- + +1. **Crypto Driver** + See :doc:`../cryptodevs/octeontx` for octeontx crypto driver + information. + +2. **Eventdev Driver** + See :doc:`../eventdevs/octeontx` for octeontx ssovf eventdev driver + information. + +3. **Mempool Driver** + See :doc:`../mempool/octeontx` for octeontx fpavf mempool driver + information. + +Steps To Setup Platform +----------------------- + +There are three main pre-prerequisites for setting up Platform drivers on +OCTEON TX compatible board: + +1. **OCTEON TX Linux kernel PF driver for Network acceleration HW blocks** + + The OCTEON TX Linux kernel drivers (includes the required PF driver for the + Platform drivers) are available on Github at `octeontx-kmod <https://github.com/caviumnetworks/octeontx-kmod>`_ + along with build, install and dpdk usage instructions. + +.. note:: + + The PF driver and the required microcode for the crypto offload block will be + available with OCTEON TX SDK only. So for using crypto offload, follow the steps + mentioned in :ref:`setup_platform_using_OCTEON_TX_SDK`. + +2. **ARM64 Tool Chain** + + For example, the *aarch64* Linaro Toolchain, which can be obtained from + `here <https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu>`_. + +3. **Rootfile system** + + Any *aarch64* supporting filesystem can be used. For example, + Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained + from `<http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_. + + As an alternative method, Platform drivers can also be executed using images provided + as part of SDK from Cavium. The SDK includes all the above prerequisites necessary + to bring up a OCTEON TX board. Please refer :ref:`setup_platform_using_OCTEON_TX_SDK`. + +- Follow the DPDK :doc:`../linux_gsg/index` to setup the basic DPDK environment. + +.. _setup_platform_using_OCTEON_TX_SDK: + +Setup Platform Using OCTEON TX SDK +---------------------------------- + +The OCTEON TX platform drivers can be compiled either natively on +**OCTEON TX** :sup:`®` board or cross-compiled on an x86 based platform. + +The **OCTEON TX** :sup:`®` board must be running the linux kernel based on +OCTEON TX SDK 6.2.0 patch 3. In this, the PF drivers for all hardware +offload blocks are already built in. + +Native Compilation +~~~~~~~~~~~~~~~~~~ + +If the kernel and modules are cross-compiled and copied to the target board, +some intermediate binaries required for native build would be missing on the +target board. To make sure all the required binaries are available in the +native architecture, the linux sources need to be compiled once natively. + +.. code-block:: console + + cd /lib/modules/$(uname -r)/source + make menuconfig + make + +The above steps would rebuild the modules and the required intermediate binaries. +Once the target is ready for native compilation, the OCTEON TX platform +drivers can be compiled with the following steps, + +.. code-block:: console + + cd <dpdk directory> + make config T=arm64-thunderx-linux-gcc + make + +The example applications can be compiled using the following: + +.. code-block:: console + + cd <dpdk directory> + export RTE_SDK=$PWD + export RTE_TARGET=build + cd examples/<application> + make + +Cross Compilation +~~~~~~~~~~~~~~~~~ + +The DPDK applications can be cross-compiled on any x86 based platform. The +OCTEON TX SDK need to be installed on the build system. The SDK package will +provide the required toolchain etc. + +Refer to :doc:`../linux_gsg/cross_build_dpdk_for_arm64` for further steps on +compilation. The 'host' & 'CC' to be used in the commands would change, +in addition to the paths to which libnuma related files have to be +copied. + +The following steps can be used to perform cross-compilation with OCTEON TX +SDK 6.2.0 patch 3: + +.. code-block:: console + + cd <sdk_install_dir> + source env-setup + + git clone https://github.com/numactl/numactl.git + cd numactl + git checkout v2.0.11 -b v2.0.11 + ./autogen.sh + autoconf -i + ./configure --host=aarch64-thunderx-linux CC=aarch64-thunderx-linux-gnu-gcc --prefix=<numa install dir> + make install + +The above steps will prepare build system with numa additions. Now this build system can be used +to build applications for **OCTEON TX** :sup:`®` platforms. + +.. code-block:: console + + cd <dpdk directory> + export RTE_SDK=$PWD + export RTE_KERNELDIR=$THUNDER_ROOT/linux/kernel/linux + make config T=arm64-thunderx-linux-gcc + make -j CROSS=aarch64-thunderx-linux-gnu- CONFIG_RTE_KNI_KMOD=n CONFIG_RTE_EAL_IGB_UIO=n EXTRA_CFLAGS="-isystem <numa_install_dir>/include" EXTRA_LDFLAGS="-L<numa_install_dir>/lib -lnuma" + +If NUMA support is not required, it can be disabled as explained in +:doc:`../linux_gsg/cross_build_dpdk_for_arm64`. + +Following steps could be used in that case. + +.. code-block:: console + + make config T=arm64-thunderx-linux-gcc + make CROSS=aarch64-thunderx-linux-gnu- + + +SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_. |