summaryrefslogtreecommitdiffstats
path: root/src/seastar/dpdk/doc/guides/platform
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/seastar/dpdk/doc/guides/platform
parentInitial commit. (diff)
downloadceph-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.rst147
-rw-r--r--src/seastar/dpdk/doc/guides/platform/dpaa.rst103
-rw-r--r--src/seastar/dpdk/doc/guides/platform/dpaa2.rst109
-rw-r--r--src/seastar/dpdk/doc/guides/platform/index.rst16
-rw-r--r--src/seastar/dpdk/doc/guides/platform/octeontx.rst161
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/>`_.