From: Yongseok Koh Date: Wed, 8 May 2019 23:39:15 +0000 (-0700) Subject: doc: add Mellanox BlueField platform guide X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=22d1d1ccc357f292080b993059b94833ac9300a6;p=dpdk.git doc: add Mellanox BlueField platform guide Platform specific guide for Mellanox BlueField SoC is added. Signed-off-by: Yongseok Koh Acked-by: John McNamara --- diff --git a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst index f19e2edadb..bba9b92039 100644 --- a/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst +++ b/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst @@ -34,6 +34,8 @@ Unzip and add into the PATH For the host requirements and other info, refer to the release note section: https://releases.linaro.org/components/toolchain/binaries/ +.. _arm_cross_build_getting_the_prerequisite_library: + Getting the prerequisite library -------------------------------- diff --git a/doc/guides/platform/bluefield.rst b/doc/guides/platform/bluefield.rst new file mode 100644 index 0000000000..0bb58e50ac --- /dev/null +++ b/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 `_ + + +Supported BlueField Platforms +----------------------------- + +- `BlueField SmartNIC `_ +- `BlueField Reference Platforms `_ +- `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 +`_. + + +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/doc/guides/platform/index.rst b/doc/guides/platform/index.rst index 98c66389d0..a17de2efba 100644 --- a/doc/guides/platform/index.rst +++ b/doc/guides/platform/index.rst @@ -10,6 +10,7 @@ The following are platform specific guides and setup information. :maxdepth: 2 :numbered: + bluefield dpaa dpaa2 octeontx